Lucas Duda hit a long home run and the Mets threw out the potential tying run at the plate in the ninth inning to hold off the St. Louis Cardinals 3-2 Wednesday night with a stiff wind whipping through Citi Field.
Jonathon Niese earned his first win of the season, and shortstop Ruben Tejada cut down Matt Carpenter for the second out of the ninth on a strong relay from center fielder Kirk Nieuwenhuis.
St. Louis manager Mike Matheny challenged the call by plate umpire Marty Foster, which was upheld following a replay review of 1 minute, 20 seconds that showed catcher Travis d'Arnaud nicked Carpenter with a sweep tag near his armpit.
Cardinals right-hander Michael Wacha (2-2) set career highs with 10 strikeouts and five walks in the shortest of his 14 regular-season starts in the majors. A bizarre outing if ever there was one — but it was that sort of night.
With a runner on second, Kyle Farnsworth retired Matt Holliday on a fly to right to end it.
Curtis Granderson snapped his career-worst hitless skid at 22 at-bats with a first-inning single, and the Mets got 6 2-3 effective innings from Niese (1-2) before turning it over to the bullpen.
Carlos Torres and Scott Rice escaped an eighth-inning jam before Farnsworth worked the ninth for his second save. He gave up consecutive singles and an RBI double to pinch-hitter Daniel Descalso that one-hopped the wall in left-center, but New York's defense saved Farnsworth.
Carpenter had four hits and Yadier Molina added three for the Cardinals, but Jhonny Peralta's hitless streak reached 21 at-bats. Peralta popped out with runners at second and third in the eighth before pinch-hitter Matt Adams flied out to end the inning.
Niese improved to 4-1 in six career starts against St. Louis.
The game began in 31 mph wind gusting up to 41 mph on a 51-degree night at a mostly empty stadium. Workers hustled between innings to clean up all the flying napkins and hot dog wrappers that littered the outfield — even bundled-up second base umpire Rob Drake helped out during a stoppage in play.
High popups and flyballs were an adventure. Mets shortstop Ruben Tejada dropped one after retreating into the outfield, then scampering back to the infield. New York still got an easy forceout on the play.
Wacha's red cap blew right off his head as he was waiting for a new ball and rolled, like tumbleweed, to second baseman Mark Ellis.
Duda homered against Seth Maness leading off the sixth, a laser beam of a line drive that cut under the wind and nearly reached the Shea Bridge walkway above the bullpens in right-center.
It was the first home run for the Mets in their last seven home games, ending their longest such drought since May 2012.
Early on, it appeared the 22-year-old Wacha was headed to a record-setting performance.
Last year's NL championship series MVP overpowered the Mets with nine strikeouts in the first three innings but soon lost his control. He walked three in the fourth, including No. 8 batter Tejada and Nieuwenhuis with the bases loaded, forcing in two runs.
Wacha was pulled for a pinch hitter in the fifth after throwing 93 pitches. Coming in, he had issued only three free passes in 26 innings this season.
Molina doubled home a run with two outs in the first, extending his hitting streak to 14 games, after Tejada and the Mets botched a rundown that should have resulted in an inning-ending double play.