NEW YORK (AP) -- With a 360-foot relay in the ninth inning, the New York Mets prevented a hard-fought victory from vanishing in the wind.
Lucas Duda hit a long home run and New York threw out the potential tying run at the plate to hold off the St. Louis Cardinals 3-2 Wednesday on a blustery night at 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.
"My heart's still racing," Mets catcher Travis d'Arnaud said. "A 180-spin throw like that -- a perfect throw. I still can't believe I witnessed that."
St. Louis manager Mike Matheny challenged the call by plate umpire Marty Foster, which was confirmed following a replay review of 1 minute, 20 seconds that showed d'Arnaud nicked Carpenter with a sweep tag behind his armpit.
"I didn't feel the tag and I initially thought that I was safe," Carpenter said. "But I got a chance to look at it and it was a good call."
With a runner on second, Kyle Farnsworth sealed it by retiring Matt Holliday on a tricky fly to right.
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.
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) with wind gusting up to 41 mph on a 51-degree night.
"Kind of throwing cue balls out there," Niese said. "It kind of felt like I was throwing with an ice pack on. It's tough to keep warm."
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.
"Two great throws," Carpenter said. "That's a tough play that's not made a whole lot, especially with the game on the line."
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 with a 1.87 ERA in six career starts against St. Louis.
"I don't know what it is with Jon and cold weather, but he gets the call," Mets manager Terry Collins said. "He pitched absolutely great tonight in the conditions."
The game began in a 31 mph wind 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.
"It was terrible. The worst. Not fun," Carpenter said.
High popups and flyballs were an adventure. 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 past 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.
The Mets said Wacha joined Smoky Joe Wood (1909), Felix Hernandez (2013) and Danny Salazar (2014) as the only pitchers since 1900 to have at least 10 strikeouts in an outing that lasted no more than four innings, according to the Elias Sports Bureau.
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.
NOTES: Cardinals ace Adam Wainwright (knee) expects to make his next scheduled start Sunday against Pittsburgh, Matheny said. ... Mets leadoff hitter Eric Young Jr. was rested.
REDS 5, PIRATES 2
PITTSBURGH -- Alfredo Simon pitched into the seventh inning despite erratic control and Jay Bruce drove in a run for a fifth consecutive game to lead Cincinnati.
Simon (3-1) worked 6 2-3 innings and allowed two runs on four hits and five walks while striking out four. He has pitched at least six innings in each of his four starts this season as a replacement for the injured Mat Latos. Simon pitched exclusively in relief the previous two years.
Bruce had two hits and knocked in the final run of the decisive three-run fifth inning against Charlie Morton (0-3) that gave the Reds a 4-2 lead. Billy Hamilton also had two hits for Cincinnati, which has won seven of 10 games since a 3-7 start.
Jonathan Broxton pitched a scoreless ninth inning, despite allowing two hits, for his third save.
DIAMONDBACKS 7, CUBS 5
CHICAGO -- The Chicago Cubs marked Wrigley Field's 100th birthday in dramatic fashion Wednesday, allowing the Arizona Diamondbacks to rally for five runs in the ninth inning and a 7-5 victory.
After an error by shortstop Starlin Castro, Martin Prado hit a two-run single off Pedro Strop (0-2), Miguel Montero had a tying single against James Russell and Aaron Hill followed with a two-run triple off Justin Grimm.
Trevor Cahill (1-3) pitched two scoreless innings for Arizona, which ended a four-game losing streak, and Addison Reed got his fourth save. The game drew 32,323 -- about 9,000 under capacity.
Arizona said after the game that outfielder Mark Trumbo will be sidelined for an unspecified extended period because of a stress fracture in his left foot.
BRAVES 3, MARLINS 1
ATLANTA -- Pinch-hitter Evan Gattis broke an eighth-inning tie with a two-run double off A.J. Ramos as Atlanta took two of three from Miami and won for the ninth time in 12 games overall. The Marlins are 1-8 on the road.
Braves pitchers struck out 16, giving them 41 strikeouts and five walks -- one intentional -- in the three-game series. Miami pitchers struck out 37 and walked nine.
David Carpenter (1-0) got the final out of the eighth, and Craig Kimbrel pitched a perfect ninth for his sixth save. Mike Dunn (1-3) was the loser.
GIANTS 12, ROCKIES 10
DENVER -- Hector Sanchez hit two of San Francisco's six homers, including a grand slam in the 11th off Chad Bettis (0-1).
Michael Morse also hit two homers -- a solo shot in the second and a three-run homer the following inning -- as two Giants hit multiple homers in the same game for the first time since May 25, 2005. Brandon Hicks and Brandon Belt also went deep as the Giants rallied from a 5-1, second-inning deficit.
Jean Machi (4-0) got one out for the win.
BREWERS 5, PADRES 2
MILWAUKEE -- Jean Segura hit a three-run homer, and Milwaukee broke out of an offensive slumber at home to support Kyle Lohse.
Segura homered for a 4-1 lead in the second. Khris Davis added a solo shot for the Brewers, who have won five of six and are a big league-best 16-6.
Lohse (4-1) allowed five hits and no walks in seven innings. The Brewers had nine hits at Miller Park, where the team had been averaging just two runs and six hits entering the night.
Francisco Rodriguez pitched a scoreless ninth for his ninth save, his 313th over 12 full big league seasons.
Tyson Ross (2-3) allowed a season-high five earned runs in six innings.
NATIONALS 5, ANGELS 4
WASHINGTON -- Adam LaRoche's tiebreaking RBI single off the first pitch from Fernando Salas capped a four-run rally in the bottom of the ninth inning that kept Washington from getting swept.
Los Angeles led 4-1 entering the ninth, and closer Ernesto Frieri (0-2) went in, seeking his third save.
Instead, he left with his second blown chance, charged with all four runs Washington scored in that inning.
Jose Lobaton led off with his first homer of the season. One out later, Denard Span singled, then Anthony Rendon walked. Frieri then gave up Jayson Werth's two-run double to make it 4-all.
Salas entered, and LaRoche greeted him with a liner to left that scored Werth.
Drew Storen (2-0) got one out in the ninth for the victory.
INDIANS 5, ROYALS 3
CLEVELAND -- Jason Kipnis drove in Nick Swisher with a two-out double in the seventh inning, sending Cleveland past Kansas City.
Kipnis ripped his double off Kelvin Herrera (0-1) into the gap in right-center, deep enough to easily score Swisher, who reached on a two-out single. The Indians tacked on an insurance run in the eighth on pinch-hitter Lonnie Chisenhall's bloop RBI single.
Bryan Shaw (1-0) finished the seventh and got one out in the eighth. Cody Allen retired two, and John Axford worked the ninth for his AL-leading eighth save.
Salvador Perez and Mike Moustakas hit back-to-back homers in the second for Kansas City.
WHITE SOX 6, TIGERS 4
DETROIT -- Marcus Semien's seventh-inning grand slam lifted Chicago over Detroit.
Jose Abreu hit another long home run for the White Sox, but it was Semien's first career slam that turned around the game. Detroit starter Drew Smyly allowed two runs in six innings, but Evan Reed (0-1) gave up two singles and a walk, and Ian Krol allowed the home run to Semien.
Andre Rienzo (1-0) gave up four runs in the fourth inning, but kept the Tigers quiet otherwise in his first start this season. He allowed five hits and two walks in 6 1-3 innings, striking out three.
Matt Lindstrom pitched the ninth for his third save.
RED SOX 5, YANKEES 1
BOSTON -- Michael Pineda was ejected for using pine tar less than two weeks after appearing to get away with using a foreign substance in another game against Boston, and the Red Sox beat the New York Yankees 5-1 Wednesday night.
The right-hander was thrown out in the second inning when plate umpire Gerry Davis found the substance on the right side of Pineda's neck after Red Sox manager John Farrell asked him to check. Pineda walked from the mound without protest.
Both Pineda and Davis said it was pine tar. Yankees general manager Brian Cashman said Pineda and the organization were "embarrassed."
John Lackey (3-2) allowed one run and seven hits in eight innings with 11 strikeouts and no walks. Koji Uehara struck out three in the ninth in a non-save situation.
Mike Napoli had three hits and Boston scored two runs in the first and two more in the third. The Yankees scored on Alfonso Soriano's sacrifice fly in the sixth.
MARINERS 5, ASTROS 3
SEATTLE -- Kyle Seager hit a three-run homer with one out in the bottom of the ninth and Seattle rallied to snap an eight-game losing streak.
Seager homered for his second straight at-bat after being mired in a slump for most of the season.
Seager hit a two-run homer in the seventh off Jarred Cosart, then added the winning shot on the first pitch from Josh Fields (0-1) in the ninth. The five RBIs were a career high.
Fernando Rodney (1-1) pitched the ninth for Seattle.
RANGERS 3, ATHLETICS 0
OAKLAND, Calif. (AP) -- Martin Perez (4-0) pitched a three-hitter for his second consecutive shutout to extend his scoreless innings streak to 26, helping Texas complete a three-game sweep.
Donnie Murphy homered and Michael Choice scored one run and drove in another for the Rangers, who moved a half-game ahead of Oakland in first place in the AL West with their first sweep of the A's since August 2011.
Sonny Gray (3-1) allowed three runs and five hits in seven innings. He had won six straight regular-season decisions dating to September.
ORIOLES 10, BLUE JAYS 8
TORONTO -- Nelson Cruz hit two of Baltimore's season-high four home runs and Chris Davis and Matt Wieters also connected fpr the Orioles.
Cruz hit a solo homer off Dustin McGowan in the third and a grand slam off Todd Redmond (0-2) in the fifth, giving him six homers this season and 11 career multihomer games. The slam was his seventh.
Davis hit a solo homer in the first, and Wieters added a solo drive off J.A. Happ in the seventh.
Brett Lawrie hit a three-run homer for Toronto, his second home run in two games. Jose Reyes had a two-run shot and Ryan Goins hit a solo homer, his first this season.
Chris Tillman (3-1) won for the third time in four starts despite allowing seven earned runs, two more than he'd given up in his four previous outings this season combined. Tillman allowed nine hits in 5 2-3 innings, walked two and struck out a season-high seven.