Taurean Prince scored 18 points, Trae Young finished with 17 points and 10 assists and the Hawks held off the Heat 115-113 on Tuesday night in Miami to snap a seven-game road slide.
The Hawks have won two games in a row after losing 10 straight.
John Collins scored 16 points, Omari Spellman had 14 and Kent Bazemore finished with 12 for the Hawks.
Josh Richardson led Miami with 22 points, but his potential winning 3-pointer with 3 seconds left - a wide-open look - bounced off the rim. Dwyane Wade scored 18 and Wayne Ellington added 15 for the Heat, who have lost six straight at home. It's only the 10th time in the 31 years of Heat basketball that Miami has lost so many consecutive games at home.
The Hawks led by 19 early in the second half and were still up by 13 with 8:50 left, before Miami went on its best run of the night.
The Heat needed less than four minutes to go on a 14-0 run. Richardson scored seven of those points, including the last basket of the spurt with 5:04 remaining, to go up 109-108 - their first lead since early in the second quarter.
And then it was the Hawks’ turn for a run, this one a 7-0 spurt for a six-point lead as the Heat missed six consecutive shots. Back came Miami, with a 3-pointer and a follow shot to get within one.
Prince made the second of two free throws with 14 seconds left, giving the Hawks a 115-113 lead. Miami took its final timeout, and Richardson's last shot bounced away as time expired.
Miami scored a season-high 38 points in the first quarter, and followed that up with its lowest-scoring quarter of the season - a 14-point outing in the second, as the Hawks took control.
Atlanta outscored Miami by 19 points in the second quarter, with impressive balance. The Hawks had 10 players log more than two minutes of playing time in the first half, all of them had between three and nine points, and after a 3-pointer by Bazemore beat the halftime buzzer Atlanta went into the break with a 68-52 lead.
It was Atlanta's biggest halftime lead of the season.
Hawks veteran Vince Carter, who went through shootaround in the morning and warmed up pregame - with a 360-degree dunk - didn't play. He's been held out of the last two Hawks games.
The Hawks played without guard Tyler Dorsey (left ankle). Kevin Huerter started for the fourth time this season, after dealing with an aching back throughout the day.
The Hawks (5-16) play at Charlotte on Wednesday.