Al Horford, who finished with 23 points on 11-of-22 shooting and 11 rebounds, scored the game's winning basket with 5.9 seconds left on Saturday.
MILWAUKEE -- It was a highly contested affair between two teams fighting for the playoffs.
The Bucks entered Saturday as the Eastern Conference's eighth seed and the Hawks were the sixth. And it played out like a playoff game with the Hawks (31-23) coming out on top, 103-102.
Al Horford, who finished with 23 points on 11-of-22 shooting and 11 rebounds, scored the game's winning basket with 5.9 seconds left after bullying his way past Larry Sanders, who had 12 points and 19 rebounds.
Monta Ellis rushed the inbounds pass down the floor and attempted a fade-away jumper that hit off the back of the rim as time expired.
The Bucks (26-28) had the ball down 101-100 with 15.2 seconds left and went to Ellis, who finished with 14 points on 7-of-14 shooting to go with 10 assists. He drove down the right side of the lane and made his layup to open up a 102-101 lead with 10.8 seconds left.
Milwaukee opened an 89-79 lead with 8:23 left in the fourth, the game's largest spread, and appeared primed to hold on until a 22-11 run created a one-point lead for Atlanta, 101-100, with 1:28 left after a Horford dunk.
With Brandon Jennings (11 points on 4-of-11 shooting) limited offensively, the Bucks relied on Ersan Ilyasova, who had 19 points, and J.J. Redick, who made his Milwaukee debut with 16 points, for offense.
Milwaukee held a big edge on the glass, 58-41, but couldn't overcome its 4-of-12 shooting from beyond the arc combined with Atlanta hitting 50 percent of its three-point attempts (14 of 28).
Atlanta held a tight advantage, 54-53, after the first half. Atlanta's Jeff Teague led all scorers with 14 on 6-of-9 shooting. He scored five of Atlanta's first 11 points.
Milwaukee owned a 27-19 lead after the first quarter, which ended with a 11-4 run for the Bucks and was highlighted by two steals in the final 10 seconds. Atlanta responded quickly, opening the second quarter on a 10-2 run to knot the game at 29.
Tempers flared a few times in the game's opening half with three technical fouls called.
With 36.1 seconds left in the first quarter, Atlanta's Zaza Pachulia fouled John Henson underneath. While raising his hand to acknowledge his foul, he bumped Milwaukee's Samuel Dalembert, who didn't take too kindly to it. Dalembert shoved Pachulia, and both players were assessed technical fouls.
Jennings was called for the game's first technical with 6:24 left in the opening quarter after a dispute with an official. Coinciding with the technical, Redick replaced Jennings to a warm round of applause to make his Milwaukee debut.
Atlanta's Josh Smith, who was part of numerous trade rumors prior to Thursday's deadline, missed his first four shots of the game and was 1 of 5 for two points in the first quarter. He finished with 15 points and 13 rebounds.
NOTES: Of Redick's 51 games this season, 40 have started on the bench. In games starting on the bench, Redick has posted double-digit points in 31 of them (one of 12 reserve players with at least 30 games scoring 10-plus points off the bench entering Saturday's game). He's scored 20-plus points off the bench 10 times, the fourth-most in the NBA this season entering Saturday. ... Entering Saturday's game two Bucks rank in the top 15 in the NBA for points per game in the second half. Jennings is tied for 11th with Jrue Holiday (9.7 ppg) and Ellis ranks 15th (9.4 ppg). Jennings had six points and Ellis had four in the second half. ... Over the last five games Atlanta's Horford has averaged 24.2 and 10.0 rebounds while shooting 67.9 percent from the field (55 of 81). He's scored over 20 points and made at least 10 field goals in each of those games. It's the first time in his career he's scored 20-plus points in five straight games.on.