The Mets used a late five-run surge to take an 8-4 lead before the Phillies rallied in the bottom of the ninth inning, and appeared to tie the score on a Rhys Hoskins three-run homer. Umpires, though, reversed the call and the Mets hung on to win 8-7.
"I don't know if it's a season-defining game, but it was definitely a momentum shifter," Mets first baseman Pete Alonso told reporters. "I think we got the ball rolling in a very positive direction. It was a tough, gritty win."
Mets second baseman Jeff McNeil had four hits in the win. Alonso drove in three runs for the Mets.
The Phillies got off to a terrific start, with left fielder Andrew McCutchen hitting a leadoff home run in the bottom of the first inning. Mets outfielder Michael Conforto tied the score with an RBI single in the top of the third.
Mets catcher James McCann reached base on a fielder's choice in the top of the sixth inning and Dominic Smith scored due to a throwing error, which gave the Mets a 2-1 edge.
Phillies outfielder Bryce Harper reached base on a fielding error to lead off the bottom of the inning. Mets relief pitcher Miguel Castro struck out J.T. Realmuto in the next at-bat, but then allowed another single to Alec Bohm.
Phillies shortstop Didi Gregorius smacked the first pitch of his exchange with Castro to right field for a 368-foot, three-run homer, which gave the Phillies a 4-2 lead.
The Mets responded with the five-run eighth inning. Kevin Pillar sparked the explosion with a leadoff home run off Phillies relief pitcher Brandon Kintzler. Jonathan Villar singled in the next at-bat and came around to score when Jose Peraza singled two at-bats later, tying the score at 4-4.
Jose Alvarado replaced Kintzler and quickly allowed a single and walked two batters, which allowed Conforto to score. Alonso swatted a bases-clearing double in the next at-bat to give the Mets an 8-4 edge.
The Phillies responded in the bottom of the final frame. Mets relief pitcher Edwin Diaz walked Gregorius in the first at-bat and then forced Nick Maton to pop out. Roman Quinn followed with a triple to right field, which scored Diaz and cut the Mets lead to three runs.
Diaz struck out Odubel Herrera for the second out of the inning, but walked Matt Joyce and brought Hoskins to the plate. The Phillies first baseman earned a 2-1 lead in the count against Diaz, who tossed in a 100.3-mph fastball for his final offering.
Hoskins smacked the high heat deep toward right field for what appeared to be a game-tying home run. Umpires reviewed the play and determined that the ball hit a fence and bounced back onto the field. They ruled it a 2-run double.
The Mets brought in Jeurys Familia to replace Diaz for the next at-bat and he struck out Harper to end the game and earn his first save of the season.
Hoskins went 2 for 4 with two RBIs in the loss. Gregorius went 1 for 3 with three RBIs, two runs scored and a walk for the Phillies.
Mets starter David Peterson allowed four hits and one run in five innings. Peterson threw eight strikeouts in the win. Phillies starter Zach Eflin allowed 10 hits and two runs in six innings.