Cantu's double ignited a three-run fifth that saw the Marlins break a 3-3 tie and grab the momentum they needed to win their third straight game and fifth in six tries.
Starter Nate Robertson (4-3) pitched well enough for the win, allowing two earned runs on seven hits in 5 2/3 innings. Leo Nunez got the save, his eighth, despite letting a run score in the ninth.
John Maine (1-3) was ineffective for the Mets, surrendering six runs on seven hits with five walks. He was particularly wild in the first inning, walking four batters.
The Mets got a homer from David Wright and Luis Castillo plated a pair of runs in the loss.