The Braves overcame deficits of 3-1 and 4-3. They lead the NL in come-from-behind wins.
Pitchers for the two teams combined to retire 30 consecutive batters Monday, when Atlanta won 7-1 in 14 innings. The second game of the series was a slugfest by comparison, with Upton leading the way.
He doubled home a run in the third, doubled and scored to make it 4-all in the fifth, then hit his 16th home run—but first since June 12—leading off the seventh against reliever Ryan Webb.
In Monday's marathon, Upton hit a two-run double to put Atlanta ahead in the final inning.
Julio Teheran (7-4) allowed one earned run in 7 1-3 innings. All-Star closer Craig Kimbrel pitched a perfect ninth for his 24th save in 27 chances, and Atlanta improved to 12-2 at Marlins Park since it opened in 2012.
Brian McCann had a sacrifice fly and an RBI single for the Braves. B.J. Upton raised his average to .178 with two hits and was robbed of an RBI single on a leaping grab by third baseman Ed Lucas.
The Marlins, who have the NL's worst record, lost their fifth game in a row.
Henderson Alvarez (0-1) allowed five runs, four earned, in six innings. The start was his second after he missed the first three months of the season because of shoulder inflammation.
An unearned run put Atlanta ahead to stay in the sixth. Alvarez fielded Teheran's swinging bunt and threw wildly past first for an error, allowing B.J. Upton to score from second base.
Miami's Rob Brantly hit his first home run of the season, a three-run shot with two outs in the second. The runs were all unearned because they scored following a one-out error by third baseman Chris Johnson.
The Braves went ahead in the second when Freddie Freeman led off with a double, advanced on a groundout and scored on B.J. Upton's sacrifice fly. That was Upton's 20th RBI in 266 at-bats.
Brantly pulled a homer just inside the right-field foul pole in the second to put Miami ahead 3-1. Atlanta tied the score in the third on an RBI double by Justin Upton and a sacrifice fly by McCann.
Miami regained the lead in the third on an RBI single by Logan Morrison, who had been 2 for 17 with runners in scoring position. The Braves made it 4-all in the fifth when Justin Upton doubled and scored on McCann's single.
Teheran picked Morrison off second base in the second. The right-hander has seven pickoffs, most in the majors.
Marlins rookie center fielder Marcell Ozuna threw out Johnson trying to score on a flyout in the fourth inning. The assist was the eighth for Ozuna, one off the major league lead for outfielders.
NOTES: Braves RHP Brandon Beachy (elbow) allowed three hits and two runs in three innings in a rehab start for Triple-A Gwinnett against Norfolk. ... Before the game, the Marlins recalled LHP Duane Below from Triple-A New Orleans. ... The retractable roof was closed after being open at the start of Monday's game. ... Campaigning for Freeman, an All-Star game candidate as one of the final NL five, Braves players wore T-shirts before the game that read, "Hug for votes (hash)VoteFreddie."