MIAMI — Atlanta Braves backup catcher Gerald Laird watched the first 12 innings of Monday night's game from the bench and still found himself exhausted at the end.
"I'm so tired," Laird muttered as he collapsed into a chair at his locker shortly before midnight.
The Braves went without a baserunner for 24 consecutive batters before their bats came to life in the 14th inning, when they scored six times to beat the Miami Marlins 7-1.
Justin Upton broke a tie by driving in two runs when he doubled for Atlanta's first hit since the sixth, and Laird added a two-out, two-run single.
"It's a weird game," Laird said. "We gave our offense a chance, and we knew we weren't going to get shut out all night."
Five Miami relievers combined to retire 24 batters in a row 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.
After Laird's hit, 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 hitters from the eighth to the 13th.
"Our innings felt like they were going fast," Atlanta's Dan Uggla said. "I didn't know what inning it was, but I realized we hadn't had a baserunner in forever. Once Reed got on I thought, OK, maybe something will get sparked right here."
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, and improved to 11-2 in two years at Marlins Park.
"To win that was big," Uggla said. "It stinks to play games like that and then lose."
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 61/3 innings, then watched the rest of the 4-hour, 14-minute game on a clubhouse TV.
"I was sitting here forever," he said. "They played more than I pitched. It doubled the game."
Minor 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.
"We had tons of opportunities and just couldn't get the big hit," Marlins manager Mike Redmond said. "In those close games, it's going to come down to who's going to get it, and they got it."
Ruggiano's two-out RBI single in the fifth delivered 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.
"It's an odd spot to find yourself in - throwing early in a long, long game like that and being relegated to cheerleading," Slowey said.
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.