"He threw the ball exceptional today. Even when he missed, he was missing to quality locations. He used different types of breaking ball when behind in the count. Settled into a good rhythm, carried it through the seven innings. Very efficient. A positive day for Joe," said Red Sox manager John Farrell.
Xander Bogaerts knocked in two runs, the last coming on a solo home run in the eighth inning.
David Ortiz put the Red Sox in front with an RBI single to center in the sixth. For Ortiz, it was just his second RBI of Spring Training. Jackie Bradley Jr. and Mookie Betts started the rally with singles. Bogaerts contributed with a sacrifice fly.
Bradley also made a fine play on defense, fielding a carom off the Green Monster at JetBlue Park and firing a strike to second to nail Kevin Plawecki.
It was a quiet day offensively from the Mets, who got an RBI single from Matt Reynolds to briefly put the Red Sox in a 1-0 deficit. Most of New York's regulars played a home game against the Astros.
Mets starting pitcher Logan Verrett tossed four scoreless innings, allowing two hits.
"I thought it was good. That's the longest outing I've had this spring so far. So I was just hoping to work deep into the game with the pitch count they gave me and I was happy with the results," Verrett said.
Boston closer Craig Kimbrel struck out the side in the eighth inning, hitting 98 mph with his last pitch.
Up next for the Mets: Two of the game's brightest young pitchers, Noah Syndergaard and Michael Wacha will square off when the Cardinals come to Tradition Field for a 1:10 p.m. ET game Friday. Syndergaard has been electric all spring, posting a 1.54 ERA with 10 strikeouts and one walk in 11 2/3 innings. The game will be shown on MLB.TV.
Up next for the Red Sox: Ace David Price draws the start for Friday's 6:05 p.m. ET home game against the Pirates at JetBlue Park, live on MLB.TV. Matt Barnes and Noe Ramirez, who are in competition for the final available spot in the bullpen, are both expected to pitch.