Didi Gregorius homered, singled and drove in two runs to lift the host Philadelphia Phillies past the New York Mets 4-1 on Tuesday.
Adam Haseley added two RBI for the Phillies, who snapped a three-game losing streak and moved back above .500 at 24-23.
Phillies starter Jake Arrieta tossed 5 1/3 innings and allowed eight hits and one run. Arrieta (4-4) was lifted after 97 pitches when he appeared to grab his right hamstring after hitting Andres Gimenez.
Hector Neris pitched a scoreless ninth to earn his fourth save in seven opportunities.
Brandon Nimmo homered and singled while Jeff McNeil contributed three hits for the Mets (21-27), who dropped their third in a row. J.D. Davis added two hits.
The Mets managed 11 hits but went 0 for 6 with runners in scoring position.
Mets starter Rick Porcello gave up six hits and four runs in six innings. Porcello (1-5) struck out five and walked two.
The Mets loaded the bases with two outs in the third inning, but Pete Alonso flied out to shallow center field to end the threat.
Jean Segura walked, Scott Kingery doubled and Andrew Knapp walked to load the bases for the Phillies with two outs in the fourth. Haseley, a pinch hitter, then singled to center, scoring two runs as the Phillies jumped ahead.
Nimmo opened the fifth with a solo homer to right to bring the Mets within 2-1.
In the fifth, Alec Bohm singled and Gregorius launched a two-run homer to right with two outs for a 4-1 advantage.
The Mets loaded the bases with one out in the sixth but Wilson Ramos grounded into a 6-4-3 double play against Phillies reliever JoJo Romero.
New York placed runners on second and third with two outs in the eighth. But Gimenez grounded out to third against Tommy Hunter where Segura tagged out McNeil just before Dominic Smith crossed home plate.
Luis Guillorme opened the ninth by striking out swinging. Nimmo flied out to center and Michael Conforto walked. Davis followed with a single and Smith struck out swinging to end the game.