Garrett Cooper went 3-for-3 with a two-run homer and a walk as the host Miami Marlins knocked off the New York Mets 6-3 on Friday night.
Pete Alonso led New York with a two-run homer. Alonso has 33 homers and 108 RBIs this year.
The Mets (87-52) entered Friday with a half-game lead over Atlanta in the National League East, but the Braves finished the night a half-game ahead after beating the Seattle Mariners 6-4.
Miami (57-80), which also got a two-run homer from rookie Charles Leblanc, won its second straight game in its role as spoiler.
Rookie Edward Cabrera (5-2) earned the win, allowing five hits, two walks and three runs with four strikeouts in 5 2/3 innings. In three previous starts against the Mets, he had been 0-1 with an 8.68 ERA.
Dylan Floro pitched a scoreless ninth for his fourth save of the year.
David Peterson (7-4) took the loss, allowing five hits, two walks and three runs with seven strikeouts in 3 2/3 innings. He had been 2-0 with a 2.06 ERA in three previous starts against Miami.
The Marlins opened the scoring in the first as Brian Anderson walked, then Cooper followed by homering off a 1-0 changeup.
New York cut its deficit to 2-1 in the third as Tomas Nido doubled and Brandon Nimmo lined a one-out RBI single to center. After Francisco Lindor singled to put runners on the corners, Jeff McNeil bounced into a double play and killed the rally.
Miami extended its lead to 3-1 in the fourth as Nick Fortes singled, and Miguel Rojas’ RBI double rolled all the way to the wall in left-center.
The Marlins made it 4-1 in the fifth as Cooper doubled and scored on a Fortes two-bagger.
New York cut its deficit to 4-3 in the sixth as Nimmo walked and Alonso homered with his 115-mph blast to left.
The bottom of the sixth was eventful for Miami due to poor base-running as Bryan De La Cruz was thrown out at third by shortstop Lindor, and Jon Berti was picked off first by reliever Mychal Givens.
New York loaded the bases with one out in the seventh against reliever Tanner Scott, who was then pulled. Steven Okert faced one batter, getting Lindor to ground into a double play.
Leblanc’s two-run homer in the eighth gave Miami a 6-3 lead, and the Mets went down in order in the ninth.
— Field Level Media