Jose Berrios made just one mistake in an otherwise impressive outing as he continues to dominate on the mound to start the season.

Michael Massey's two-run homer gave Kansas City a lead it never relinquished as the Royals beat the Toronto Blue Jays 4-1 on Tuesday. After Massey's blast Berrios settled down, facing just 17 more batters.

"I've been feeling healthy, strong, mentally, really stronger and more mature," said Berrios. "I want to keep building on top of this by knowing myself, feeling where I'm at, and trying to recover myself the best way I can to be ready every five days."

Berrios (4-2) gave up five hits and a walk, striking out three over seven innings. Despite giving up the two runs, his earned-run average is still at 1.44, third best among starting pitchers in Major League Baseball.

It's also the third-lowest ERA in franchise history after seven starts, behind only Jeff Musselman (1.43 ERA, 1988) and Dave Stieb (1.26 ERA, 1983).

"He's been like that for his whole career," said Blue Jays manager John Schneider. "I think right now just with where he is with his confidence in his stuff, I think that's what we can expect from Jose."

Erik Swanson, Genesis Cabrera and Zach Pop of Brampton, Ont., came out of the Blue Jays bullpen, with Swanson giving up two runs.

Bobby Witt Jr., and Vinnie Pasquantino had back-to-back RBI doubles in the eighth inning to give Kansas City (18-13) some insurance. The Royals snapped a three-game losing skid.

Cole Ragans (2-2) struck out nine, allowing a run on four hits and three walks over 6 2/3 innings. Reliever John Schreiber finished the seventh and eighth, and James McArthur pitched the ninth for the save.

Bo Bichette's RBI single in the sixth was all the offence Toronto (15-16) could muster.

Berrios was efficient to start the game, needing just six pitches to get out of the first inning, but got into trouble in the second. He gave up a single to Salvador Perez and then Massey launched a 404-foot no-doubter for his first home run of the season and a 2-0 Royals lead.

"He honestly threw me the same pitch right before that. I felt like I got a pretty good look at it that time," said Massey. "He doesn’t make many mistakes.

"With him, you’ve got to be ready on every pitch and hopefully he leaves one in the middle."

Pop was recalled from triple-A Buffalo an hour before the game. He takes Yariel Rodríguez's spot on Toronto's roster, after the rookie starter was placed on the 15-day injured list with thoracic spine inflammation.

"He's gonna be down from throwing probably at least five days, so I think that led us to be a little bit proactive with him," said Schneider. "Don't really have a timeline yet."

Both Berrios and Ragans were remarkably effective after that.

Berrios allowed only one baserunner in the next 14 batters he faced, giving up a single to Freddy Fermin who was then forced out in a double play. Berrios plunked Witt in the sixth, but Kansas City's star shortstop was then caught stealing by Blue Jays catcher Alejandro Kirk.

Ragans allowed only one hit through the first five innings when Davis Schneider singled to right field but got thrown out trying to stretch it into a double and then Bichette drew a walk two innings later.

Toronto finally started to string together some hits in the sixth when Isiah Kiner-Falefa singled to left field and then Vladimir Guerrero Jr. advanced him to third with a two-out single. Bichette plated Kiner-Falefa in the next at bat with a single to cut the Royals' lead to a run.

Witt and Pasquantino tacked on two more runs for the visitors in the eighth. Witt doubled to deep left field to score Maikel Garcia and end Swanson's relief appearance. Pasquantino doubled off the right-field wall in the next at bat to drive in Witt for a 4-1 Kansas City lead.

RIGHT SAID MANFRED — Major League Baseball commissioner Rob Manfred visited Rogers Centre ahead of the game, having separate meetings with both teams. It was an opportunity for players to speak directly with the league's top executive about issues such as recent rule changes.

ON DECK — Chris Bassitt (2-4) will take the mound for the Blue Jays in the three-game series finale on Wednesday afternoon.

Seth Lugo (4-1) will start for the Royals.