Upton's home run gave Atlanta a 6-4 advantage and the Braves scored two insurance runs in the seventh thanks to a fielding error by left fielder Carl Crawford.
It was the second error of the game for Crawford with the miscues leading to three unearned runs.
The homer by Upton was his 14th of the year and 11 of them have come with no one on base.
That was not the case in the sixth inning after Jordan Schafer singled, Andrelton Simmons made it to first on Crawford's error in left and Jason Heyward drew a walk. Upton then launched an enormous blast to left.
Heyward played for the first time since undergoing an emergency appendectomy on April 22 in Denver. He had two hits and scored twice in what was Atlanta's second win in six games.
The loss went to reliever Paco Rodriguez (0-2), who gave up the homer to Upton.