Pedro Alvarez provided the go-ahead run in the eighth inning and the Pittsburgh Pirates' pitching stifled a sputtering New York Mets offense to take a 3-2 victory and capture their third win of a four-game set from Citi Field.
Alvarez's second hit of the day plated Pittsburgh's third run, and Jason Grilli tossed a 1-2-3 ninth inning to lock down his National League-leading 15th save of the season.
"We got a good group of guys in here," Grilli said. "We've worked hard and it's paying dividends."
Clint Barmes added a solo homer and the Pirates' pitching limited New York to just four hits on the day. Starter Jeanmar Gomez tossed five strong innings of one-run ball and retired the last 11 batters he faced.
Justin Wilson (3-0) picked up the win by striking out four in 1 1/3 innings of work.
Matt Harvey pitched seven innings for New York but didn't have his usual overpowering stuff, striking out a season-low four batters. He allowed two runs on five hits.
"I have to go out there and try to put up zeroes," Harvey said.
The only support for Harvey came on a solo homer from Lucas Duda and an RBI single from Mike Baxter, as the Mets went 1-for-7 with runners in scoring position and were outscored 23-10 over the four-game set.
Scott Rice (1-2) was charged with the loss after walking Andrew McCutchen, who scored the go-ahead run in the eighth.
With 12 more strikeouts on Sunday, the Mets have fanned 28 times over the last two days.
New York tied the game at 2-2 with a run in the seventh, but the Pirates jumped back in front the following frame.
McCutchen and Gaby Sanchez worked a pair of one-out walks and the Mets called upon their third pitcher of the inning, Bobby Parnell, after Brandon Lyon struck out Jose Tabata.
Alvarez laced an RBI single off the Mets' closer, and a fielding error on Juan Lagares in center put runners at second and third. Parnell prevented further damage, however, by getting Michael McKenry to line out to center.
The Mets had a chance to score in the bottom half of the eighth when they put runners on the corners for Ike Davis, but the struggling first baseman struck out for the second time.
Davis heard boos from the home crowd following every out of an 0-for-4 day, as his average plummeted to .180 on the season.
Duda tried to salvage the frame when he lined a shot off the first-base bag, but it caromed right to second baseman Brandon Inge and he retired Duda in plenty of time to end the inning.
Duda gave the Mets an early 1-0 lead when he lifted a second-inning offering from Gomez over the wall in deep center for his eighth homer of the season.
Barmes' shot into the left-field seats to lead off the third tied the game, and Pittsburgh jumped in front later in the inning when Garrett Jones lifted a sac fly into right with the bases loaded.
Mets catcher John Buck picked Barmes off second base to end the seventh and then drew a one-out walk while batting in bottom half of the frame. He moved to second on a Wilson wild pitch and got Harvey off the hook by hustling home on Baxter's bloop single into left to make it 2-2.
Baxter stole second and then swiped third on Wilson's strikeout of Lagares. Pinch-hitter Justin Turner couldn't bring him home, though, also going down swinging to end the inning.
The Mets have won only four of their last 15 games and went 7-for-40 with runners in scoring position during their six-game homestand ... Buck stole his first base since September 20, 2009 ... Pittsburgh won its first road series against the Mets since recording a three-game sweep of the club from April 16-18, 2004 ... Pirates catcher Russell Martin sat for the fifth time in the last six games with neck stiffness ... Prior to the game, New York placed pitcher Jeurys Familia on the 15-day disabled list and recalled pitcher Greg Burke from Triple-A Las Vegas.