Boston did come close to scoring on Harvey when Mookie Betts crushed a fly ball to deep left field with two outs in the third inning. But the ball caromed off the top of JetBlue Park's towering Green Monster and stayed in play for a double.
"We had a chance to watch four innings of one of the better pitchers in the game," said Red Sox manager John Farrell. "Any time you know that a guy's coming back from what he's gone through, anyone returning from Tommy John, to see the power and the shape to the secondary pitches from him, he's a heck of a pitcher."
The Mets reached Red Sox started Joe Kelly for three runs on seven hits over 2 2/3 innings before he left the mound with a team trainer in the middle of an at-bat. Kelly was dealing with biceps tightness that impacted him on the mound.
"It affected the way the ball was coming out of my hand," Kelly said. "Couldn't spin the ball. I could throw a changeup and fastball and pretty soon it got to just fastball and was a little inconsistent coming out of my hand and prevented me from making pitches I needed to make."
New York got on the board in the second, as Michael Cuddyer doubled and scored on a single by John Mayberry Jr., who came home himself when Anthony Recker slammed a double off the left-field wall. Mayberry, who later added another single, is now 12-for-24 with six RBIs this spring.
The Mets began the following inning with four straight singles, with Curtis Granderson driving home a run on a liner to center.
Boston broke up the shutout against Mets prospect Noah Syndergaard in the sixth. Reserve catcher Matt Spring walloped a solo homer over the Monster for his first hit of the spring, and Betts tripled deep to center before scoring on a wild pitch.
The Red Sox tied the game in the eighth inning on an RBI double by Blake Tekotte. Then in the ninth, Garin Cecchini singled with one out before Spring, who finished 3-for-3, doubled off the wall in left. Tekotte was walked intentioally to load the bases for Brock Holt, but Cory Mazzoni's pitch got past Kevin Plawecki for a passed ball to score Cecchini with the winning run.
Up next: The Mets return to action Tuesday when they host the Miami Marlins in Port St. Lucie at 1:10 p.m. ET. Fans can watch that game on MLB.TV. Jacob deGrom, who tied a Major League record in a matchup with the Marlins last September when he recorded eight consecutive strikeouts to open the game, will start for the Mets against Miami left-hander Brad Hand.
Andrew Simon is a reporter for MLB.com. Follow him on Twitter @AndrewSimonMLB. This story was not subject to the approval of Major League Baseball or its clubs.