The Miami Marlins endured a miserable ninth, then came through again in extra innings.
Miami blew a late three-run lead, then bounced back when Jose Reyes hit a two-out RBI single in the 10th to snap the Atlanta Braves' four-game winning streak with a 4-3 victory.
The last-place Marlins improved to 11-5 in extra-inning games; they are 55-78 otherwise.
"We played them strange and then we win and it's all fine," Miami manager Ozzie Guillen said. "Oh boy, what a way to do it."
With one out in the 10th, pinch-hitter Rob Brantly was walked by Cory Gearrin (0-1), and Gorkys Hernandez was hit by a pitch. Following a strikeout, Reyes hit a blooper that fell in front of a diving Jason Heyward in right field, and Brantly scored without a play.
"Reyes just happened to put some bat on a ball and bloop one in there," Braves manager Fredi Gonzalez said.
John Buck hit a two-run homer, tripled and scored twice for Miami. Heath Bell (3-5) pitched a perfect 10th.
Atlanta lost to Miami for only the fourth time in 14 meetings.
The Braves rallied from a 3-0 deficit in the ninth to tie the game. Heyward doubled to start the inning against Steve Cishek, and Chipper Jones walked on a 3-2 pitch. With one out, Dan Uggla singled home a run, and Brian McCann followed with a two-run double off Mike Dunn to tie the score.
Dunn struck out Michael Bourn with runners at the corners to end the inning.
"We fought back to tie it up," McCann said. "All you can ask is for everybody to play hard. That's what we did, and it didn't go our way."
The Braves' rally spoiled a career-best outing by Miami's Nathan Eovaldi. He allowed no runs and only four hits while pitching eight innings for the first time.
Eovaldi, a 22-year-old rookie, had lost his last four starts and came into the game with the lowest winning percentage of any NL pitcher at 4-12. But he permitted just two runners to reach second base.
"He was throwing 97 (mph), 98 even in the eighth inning, and he was commanding," Gonzalez said. "Nasty."
"A very spectacular game for him," Guillen said. "No doubt this kid has a good arm."
The Braves were so flummoxed by Eovaldi that slugger Heyward bunted with two outs and none on in the sixth. He reached on a single but was stranded.
Atlanta's Paul Maholm allowed four hits and two runs in 6 2-3 innings.
The game began with the retractable roof open for the eighth time this season, and the first since June 13. The roof was closed when light rain began to fall in the fifth inning.
Buck hit his first triple of the season in the third inning and scored on a two-out single by Hernandez. Center fielder Bourn misplayed Buck's deep drive, pulling up short of the wall near the 418-foot sign and then leaping in vain for the ball.
"I think he went so far back that he felt like the wall had to be close there, and it kind of threw him off," Gonzalez said.
The Marlins added two runs in the seventh. Austin Kearns doubled with two outs, and Maholm was replaced by Peter Moylan, who gave up Buck's 11th homer.
The Marlins played without slugger Giancarlo Stanton, who missed his second consecutive game with a strained muscle in his side. He's expected to rejoin the starting lineup Friday.
Notes: Braves SS Paul Janish dislocated his left shoulder diving for an infield single in the ninth inning. He said he doesn't think he'll be sidelined for long. ... McCann was back in the lineup after missing two starts with right hamstring tendinitis. ... RHP Josh Johnson, scheduled to start Wednesday against Atlanta, is 6-4 with a 2.17 ERA in 18 games against the Braves. ... OF-1B Logan Morrison is the Marlins' nominee for the Clemente Award, which recognizes the player who best represents the game through positive contributions on and off the field. ... Brantly, a rookie C who threw out a base stealer for the first time in his career Monday, sheepishly admitted he missed a pickoff sign from the dugout before the pitch. "He's a kid," Guillen said. "He does stuff that makes you laugh."