Sonny Gray allowed a run and struck out a season-high nine while pitching into the seventh inning, Willson Contreras clubbed a two-run homer, and the visiting Boston Red Sox beat the Kansas City Royals 3-1 on Monday night.
Gray (5-1) didn’t yield that run until Jac Caglianone’s RBI double in the seventh, which cut into a 3-0 Boston lead. The right-hander yielded five hits and a walk as the Red Sox improved to 6-2 when Gray takes the ball in 2026.
The 36-year-old veteran lowered his ERA to 2.93. He is 10-2 with a 1.74 ERA in 14 career starts vs. Kansas City.
Relievers Justin Slaten, Garrett Whitlock and Aroldis Chapman held the Royals to one hit over the final three innings as Boston improved to 2-2 on a six-game trip. Chapman threw a 1-2-3 ninth inning for his 11th save in as many chances.
Caglianone had two doubles for Kansas City, which lost for the ninth time in 12 games.
The Royals put runners on second and third with one out in the second inning but failed to score against Gray. Kansas City threatened again in the fifth, when Michael Massey doubled off the glove of Boston left fielder Masataka Yoshida. However, Yoshida threw out Massey at the plate on Kyle Isbel’s subsequent single.
Those missed opportunities proved costly for the Royals. In the top of the sixth, Mickey Gasper opened the frame with a single. He came home on Contreras’ drive well over the left field wall with one out off Kansas City starter Seth Lugo (1-4) to open the scoring.
That was the only damage surrendered by Lugo, who gave up five hits and two walks while striking out five in six innings. He lost his third consecutive start.
The Red Sox added a run in the seventh. With Alex Lange on the mound, Connor Wong doubled down the left field line, went to third on Nick Sogard’s bunt single and scored on a sacrifice fly by Jarren Duran.
Kansas City finally got on the board in the bottom of the seventh. Carter Jensen opened with a four-pitch walk and scored on Caglianone’s double into the right field gap. Slaten then came on for the Red Sox, and Caglianone eventually was stranded at third.









