New York quickly on the board against Penny in the first, with RBI singles off the bats of David Wright and Matt den Dekker giving the Mets a two run edge.
A Juan Lagares double in the second pushed the Mets lead to three, and Lagares came around to score on a wild pitch before Miami was able to score against Jon Niese.
Penny was pulled after three innings, during which he allowed four runs while walking one and striking out two.
A Wright error on a Donovan Solano single allowed Christian Yelich to score in the bottom of the third before Giancarlo Stanton hit a two-run home run to left center field to make it a one run contest.
Anthony DeSclafani took over for Penny, but New York had good swings against him in the fourth. Lagares and Lucas Duda both added RBI singles and Wright's RBI double pushed the Mets lead to four runs.
A Reed Johnson sacrifice fly and Christian Yelich two-out RBI single in the bottom of the fourth kept the Marlins competitive despite the bullpen's inconsistencies on the night.
David Wright drove in a run with a sacrifice fly against Carter Capps in the sixth, but Miami got the run back on a Garrett Jones RBI groundout before Niese exited after six innings.
Dan Jennings and Sam Dyson pitched well out of the bullpen for the Marlins, who couldn't put together a late rally.
Hero of The Game: Giancarlo Stanton (+.197 WPA)
Goat of The Game: Brad Penny (-.299 WPA)
Play of The Game: Matt den Dekker singled in the first, allowing David Wright to score. (+.106 WPA)