Five Miami relievers combined to retire 24 consecutive batters before Reed Johnson walked to start the 14th against Chris Hatcher (0-1). Jason Heyward walked with one out, and Upton’s double scored both runners.
Gerald Laird hit a two-out, two-run single. Chris Johnson added an RBI single with the bases loaded, and another run scored when the ball skipped past left fielder Justin Ruggiano for an error.
Seven relievers for the two teams combined to retire 30 straight batters from the eighth to the 13th. David Carpenter (2-0) pitched two innings and escaped a jam in the 13th.
The Braves earned their 26th comeback victory, most in the NL. They improved to 11-2 in two years at Marlins Park.
The Marlins fell to 0-13 this season when their retractable roof is open — sort of. On a balmy 86-degree night, the game began with the roof open, but it was closed in the seventh inning when rain moved into the area.
Miami stranded 12 and went 2-for-10 with runners in scoring position. The Marlins’ first two batters reached in the 13th, but Logan Morrison grounded into a double play and Adeiny Hechavarria popped out.
Atlanta’s Mike Minor allowed six hits and one run in 6 1/3 innings. He struck out Jeff Mathis on a 3-2 fastball with the bases loaded to end the sixth and keep the score tied.
In the seventh, Miami stole three bases — two on a double steal — and still couldn’t score. In the ninth, Heyward made a leaping catch at the 392-foot sign in right field to rob Ruggiano of an extra-base hit.
Ruggiano hit a two-out RBI single in the fifth for the Marlins’ only run.
Four pitchers cooled off the Braves’ Brian McCann, who went 0-for-5. He was batting .512 over the previous 11 games.
Kevin Slowey, making his first start since June 12 for Miami, pitched five shutout innings before departing for a pinch-hitter after throwing only 69 pitches. Slowey took the spot in the rotation vacated when Ricky Nolasco was traded Saturday to the Dodgers.
Marlins starters have allowed fewer than four runs in 19 of the past 21 games.
Dan Jennings followed Slowey to the mound, and the Marlins’ 1-0 lead was gone two batters later. Heyward hit his first triple of the season and scored on a sacrifice fly by Upton.
NOTES: Braves RHP Brandon Beachy (elbow) will make a rehab start Tuesday for Triple-A Gwinnett, his first game since his rehab assignment was shut down last month because of inflammation. ... B.J. Upton went hitless and is 1-for-21 (.048) against the Marlins this year. ... Morrison is 2-for-17 this season with runners in scoring position.