Lucas Duda's eighth-inning line drive hit off Edward Mujica's throwing hand allowed Kirk Nieuwenhuis to score the go-ahead run as the Mets downed the Marlins, 2-1, in Jose Reyes' return to New York.
Reyes, who spent nine years as the Mets' franchise shortstop before signing a lucrative free agent deal with the Marlins last offseason, went 0-for-4 amid a mix of cheers and boos and was overshadowed by a vintage pitchers' duel and New York's late rally.
"Most of the fans...showed me a lot of love and some did not. I understand that. I play for another team now," Reyes said of the ambiguous reaction by the home crowd.
The Mets scored the tying run after working four consecutive two-out walks against four different pitchers in the seventh inning, then scored in the next frame to win for just the second time in their last seven games.
Neither starter, New York's Johan Santana or his counterpart, Josh Johnson, factored in the decision despite both allowing just one run on three hits over 6 2/3 innings. Santana, coming off the shortest outing of his career, struck out 11, two more than Johnson.
"[Santana] threw all of his pitches pretty much at will," Mets catcher Josh Thole said. "We were back to seeing who Johan is."
Jon Rauch (3-0) was credited with win after throwing a perfect eighth, while Mujica (0-2) took the loss, Miami's third straight.
In his first at-bat as a visitor at Citi Field, Reyes ripped a line drive deep to the center field warning track that Nieuwenhuis grabbed just before crashing into the wall.
"Once I got to the wall I thought I had a pretty good chance. Thankfully I caught it because [Reyes] would have been running for days," Nieuwenhuis said.
The highlight-reel catch started Santana's outing off on the right foot, and the two-time Cy Young Award winner was on cruise control until Giancarlo Stanton's two-out single in the seventh.
Gaby Sanchez followed with a double off the left-field wall, and though Ruben Tejada's relay throw beat a staggering Stanton home, the ball skipped by Thole and the run scored.
The first chance the Mets had to score against Johnson came in the fourth, when Daniel Murphy tried racing home from third on a wild pitch but was tagged out on a bang-bang play at the plate.
Johnson was at 102 pitches after walking Duda with two outs in the seventh, and Marlins manager Ozzie Guillen opted to pull his starter. Randy Choate and Steve Cishek each walked the only batter they faced to load the bases, and Michael Dunn threw a payoff pitch that Thole took below his knees to force in New York's first run.
Pinch-Hitter Zach Lutz struck out looking to end the inning, but Nieuwenhuis began the eighth with a single and moved to third on Murphy's base hit through the right side of the infield.
After David Wright looked a strike three, Duda stepped up and laced a comebacker that hit Mujica's throwing hand and trickled behind the mound far enough for Nieuwenhuis to score the go-ahead run.
Frank Francisco worked around a one-out walk in the ninth to post his fourth save of the season.
Santana, who lasted just 1 1/3 innings against the Braves last Tuesday, has not received any run support while on the mound in four starts (18 innings) this season...Thole went 1-for-2 with a walk and has reached base safely in all 15 games he's played this year, extending the longest streak to begin a season by a Mets catcher...The Mets are 0-for-15 with the bases loaded this season...Reyes is the Mets' all-time leader in runs, triples and stolen bases...Miami's Omar Infante returned from a four-game absence due to a sore left groin and went hitless in four at-bats.