NEW YORK -- R.A. Dickey gave Mets fans another rare reason to celebrate at Citi Field, while the Miami Marlins again showed some sloppy play amid their own dismal season.
The Marlins put a scare into Dickey and the Mets in the ninth with a three-run homer by John Buck off reliever Jon Rauch. But the Mets held on for a 4-3 win, giving Dickey his 19th victory of the season.
It was the Mets' second straight win at home and just their sixth there since the All-Star break.
But Jason Bay homered early for the Mets and Scott Hairston homered for the second straight game to support Dickey in his bid for a 20-win season and quest for a NL Cy Young award.
And after Rauch allowed two of Dickey's runs by giving up the homer to Buck, the first batter he faced, he recovered to earn his fourth save of the season, after putting the tying run on first.
Dickey reminded fans of one of the season's few positives, earning a standing ovation following his exit with two on and no one out in the ninth.
He pitched eight shutout innings, giving up six hits and the two runs that scored on Buck's homer, while walking two and striking out four.
After a walk by Greg Dobbs and a double by Donovan Solano chased Dickey to start the ninth and give the Marlins their first runner in scoring position since the fifth, Collins was booed as he took out Dickey. The knuckleballer had thrown 110 pitches.
In came Rauch, who promptly gave up the three-run homer to Buck that hit the left-field foul pole. The shot was initially called a ground-rule double, but was ruled a home run after a replay review, the second such call of the game. Hairston's solo homer to lead off the fourth to give the Mets a 3-0 lead was also initially called a double.
Rauch gave up a one-out single to Bryan Petersen, who stole second with two outs, but the reliever struck out Gorkys Hernandez to end the game.
The Mets scored more than four runs for the second straight game, after going 16 games at Citi Field without doing so. Bay hit just his eighth homer of the season, a two-run shot into the black in center field, for a 2-0 lead in the second.
Hairston made it 3-0 off Mark Buehrle, who gave up four runs on five hit six innings to fall to 13-13.
The Mets added a run in the fifth when Josh Thole doubled and moved to third as Dickey reached on an error and eventually scored on a ball bobbled by first baseman Carlos Lee that was ruled a fielder's choice.
Dickey cruised for most of the game, scattering the six hits, and even nearly provided his own extra-base hit. He drilled a pitch over Petersen's head in the sixth, but the left fielder went back and made a perfectly timed leaping catch at the wall to steal the hit away.
Notes: Lucas Duda was in the lineup at first base for the Mets a day after Collins pulled him after his first at-bat for not running hard on a pop up that fell in for a hit. Collins said Duda knows he made a mistake and "you've got to move past it." ... David Wright went 0-for-4, leaving him four hits shy of tying Ed Kranepool's franchise record for hits, 1,418. ... Several reports from South Florida media outlets indicated Marlins owner Jeffrey Loria will not shake up the Marlins' front office, refuting a report Thursday that Larry Beinfest, the club's president of baseball operations could be let go. Manager Ozzie Guillen's job was also reportedly in jeopardy, though he laughed off such rumors this weekend. ... Outfielder Justin Ruggiano, who sprained his right shoulder diving for a ball Friday, remained out and wasn't expected to be ready for at least a few days. Scott Cousins was called up to offer depth on the bench.