Upton, who entered the game hitting only .186, had a two-run homer and three singles after striking out in his first two at-bats. The single in the 11th off Ryan Webb (1-5) drove in pinch-runner Paul Janish from second base.
Luis Ayala (1-1) pitched a scoreless 11th.
With one out in the 11th, Chris Johnson singled up the middle for his fourth hit. Johnson moved to second on Brian McCann’s groundout before being replaced by Janish.
With two outs, Webb walked Dan Uggla, bringing Upton to the plate.
Justin Ruggiano hit a two-run homer in the first and Giancarlo Stanton also homered for Miami, which has lost five straight.
Upton hit his first homer since June 15.
Stanton’s homer in the fourth gave Miami a 3-1 lead.
Jacob Turner, who tied a Marlins record with three errors, couldn’t hold the lead. Turner walked McCann to open the sixth before giving up Upton’s tying homer to center field.
Ruggiano led off the seventh with a single and scored on Logan Morrison’s single. The Braves pulled even at 4-4 in the bottom of the seventh when Johnson hit a two-out double off Mike Dunn and scored on McCann’s single. Johnson finished with four hits.
Turner’s first error came in the first inning when he couldn’t handle Morrison’s throw to first base, allowing Jordan Schafer to reach. Schafer stole second, moved to third on Elliot Johnson’s sacrifice and scored on Freddie Freeman’s line drive to left field.
Turner had two errors on one play in the fifth. With Mike Minor on first base following a single, Turner mishandled Schafer’s bunt for an error and threw wild to first, allowing Minor to advance to third. The Braves loaded the bases on Turner’s intentional walk to Freeman, but Chris Johnson’s popup to Ed Lucas at second base ended the inning.
Miami players had drawn 38 walks in the past 11 games, but none of those 38 base runners scored. That streak of futility ended in the first inning when Stanton walked with two outs and scored on Ruggiano’s homer into the right-field seats.
Elliot Johnson, making only his second start of the season in left field, sprinted toward center field before making a diving catch of Placido Polanco’s sinking liner in the fourth. Johnson charged to make another diving catch of Donovan Solano’s liner to open the 10th.
Turner gave up three runs, two earned, and four hits in 5 2/3 innings.
Minor allowed four runs and five hits and one walk in seven innings.
NOTES: Gary Sheffield is the only other Marlins player to have three errors in a game — on Sept. 30, 1993, while playing third base against Montreal. ... Marlins manager Mike Redmond said the team will hold firm to a 170-innings limit for RHP Jose Fernandez, who is at 158 2/3 innings. Fernandez may have only two more starts before he is shut down. The Marlins pushed back Fernandez’s next start from Wednesday at the Cubs to Friday at home against the Nationals. ... The Braves recalled OF Jose Constanza from Triple-A Gwinnett to replace C-OF Evan Gattis, who was optioned to Gwinnett following Friday night’s game. The Braves plan to recall Gattis after Gwinnett’s season ends on Monday. ... LF Justin Upton, who missed his second straight start with a bruised left wrist, grounded out as a pinch-hitter in the 10th.