Hanson allowed two runs on five hits for the Braves, who have won five consecutive games and 10 of 11. Hanson (2-2) struck out seven, walked one and retired the last 13 batters he faced.
Uggla broke a 2-all tie with a one-out towering drive to left, his 12th career homer against the Diamondbacks.
Johnny Venters struck out the side in the eighth and Craig Kimbrel did the same in the ninth for his fifth save.
Arizona starter Joe Saunders (1-1) settled down after Uggla’s home run, retiring 13 of his final 14 batters, but couldn’t prevent the Diamondbacks’ fifth consecutive loss.
Saunders gave up three runs – two earned –on six hits and a walk over seven innings and struck out five and saw his ERA creep up to 1.29.
Struggles at the plate have been a problem for the Diamondbacks, who have scored two runs or less in four consecutive games.
Saunders walked Chipper Jones with the bases loaded in the first to give the Braves a 1-0 lead. Arizona tied the game in the bottom of the inning when Gerardo Parra singled, went to third on a double by Justin Upton and scored on an RBI groundout by Miguel Montero.
Jack Wilson singled and scored on Martin Prado’s two-out single in the second to make it 2-1. But Jason Kubel tied the game for the second time with a home run, his first since Aug. 31 for the Minnesota Twins against the Chicago White Sox.
Kubel’s home run ended a streak of 101 at-bats without a homer for the Diamondbacks.
Atlanta right fielder Jason Heyward’s 10-game hitting streak was snapped.
He went 0 for 4 and was called out on strikes in his first and last at-bats.
On Friday night, Brian McCann hit a two-run homer, Freddie Freeman had a pair of RBI doubles and the Braves routed the Diamondbacks 9-1.
Brandon Beachy (2-1) allowed four hits in 7⅓ scoreless innings.
Trevor Cahill (1-1) gave up seven runs, four earned, and seven hits over 5⅔ innings in his Chase Field debut for the Diamondbacks.
Freeman, who homered twice in Thursday night’s 10-2 win, doubled in a run in the third and another in the sixth.
Beachy faced only one batter more than the minimum, with one runner caught stealing and another erased on a double play.
Paul Goldschmidt singled twice and walked for the Diamondbacks.