Rodney Stuckey missed two jump shots in the final 1:14 but still led the Pistons with 22 points in a reserve role. Reserve forward Chris Wilcox added 18 and Greg Monroe scored 17 for Detroit, which has lost seven straight on the road and is 7-28 away from home.
Since losing by seven at home to Oklahoma City on March 4, the Hawks had been beaten by an average of 16.2 points in their last six defeats.
Atlanta took its biggest lead at 14 when Kirk Hinrich's reserve layup made it 72-58 with 5:08 left in the third. The Pistons came within two in the first minute of the fourth on a 3-pointer by Charlie Villanueva that made it 79-77.
By the 7:27 mark of the fourth, Horford, one of six Hawks to score in double figures, banked in a jumper on a hard foul by Villanueva, completing a three-point play for an 11-point lead.
Horford finished with 10 rebounds for his 32nd double-double.
Smith banked in a left-handed runner with 52.1 seconds over Austin Daye to beat the shot-clock buzzer and give the Hawks a 100-95 lead.
Johnson matched Stuckey with a game-high eight assists and reserve center Zaza Pachulia added 13 points and was 9 for 10 on free-throw attempts.
Atlanta had dropped 12 of 18 following after Miami left Philips Arena with a 21-point loss Friday. Detroit, which was coming off consecutive wins for the first time since Feb. 4-5, has lost 12 of 17.
Notes: Nine of the Hawks' last 10 games have been at home. They are 4-5 in that span. Atlanta hosts Chicago on Tuesday. ... Detroit has used 19 starting lineups. ... The Pistons fell to 4-27 when trailing after the first quarter, 7-36 when trailing after the third.