KANSAS CITY, Mo. -- Salvador Perez has gone from cold to hot in three games.
Perez's two-run double off Sergio Santos in the Royals' six-run eighth put the Royals ahead. Perez's four RBIs matched his career high. The Royals had scored only four runs in the eighth inning in their first 24 games.
Perez, who has three consecutive multihit games, homered in the seventh with Alex Gordon aboard to trim Toronto's lead to 5-4. He was mired in a 1-for-29 skid before breaking out with seven hits in the past three games.
"I see a couple of sliders and a couple of split-finger, then they made a mistake on a fastball a little inside and up, and I hit it pretty good," Perez said.
"That's the motto in here, never give up and always play like we're in it," Dyson said. "You just need to scratch one, scratch two, and we gained momentum and just took off from there. It was all momentum. Salvador put us back in there. That was the game-changer right there. We kind of knew we were coming back after that."
Aaron Crow (1-1), the third of four Royals pitchers, picked up the victory with a scoreless eighth inning and has not allowed an earned run while allowing only five hits in nine innings this season.
Brett Cecil (0-2) took the loss, retiring only two of the five batters he faced.
The Blue Jays' bullpen gave up seven runs in two innings after starter Dustin McGowan left the game.
"We just got hit tonight," Blue Jays manager John Gibbons said of his relievers. "We had an off day yesterday so they were fresh. We didn't help things out. We let guys take the extra base by missing the cutoff man. You're not going to win that way. We've proved that we can play good defense."
Melky Cabrera extended his hitting streak to 11 games with a double and triple, and drove in two Toronto runs. He tops the majors with 41 hits.
Cabrera's triple in the fifth scored Jose Reyes, who had doubled. Cabrera scored on Vargas' wild pitch, putting the Blue Jays up 3-2.
McGowan, who has missed three seasons with injuries, pitched into the seventh inning, holding the Royals to three hits and three runs, two earned.
"I'm really encouraged," McGowan said. "I went deep into the game. That's all I've been wanting to do. Sometimes the results are overshadowed by the innings you've pitched. But good things happen when you get deep in games."
The Royals took advantage of two walks and a wild pitch, plus a throwing error on catcher Dioner Navarro to score two runs in the second inning.
The Royals won a challenge review in the second, taking away a RBI infield single from Chris Getz.
The Royals have scored 19 runs in winning the past two games.
"It's going to click; we know that," Royals first baseman Eric Hosmer said of the offense. "We're confident in our group. We've been getting some timely hits. It's a great thing about this offense. It could be a different guy every day that steps up and has a big night. Salvy obviously had that night tonight."
Royals LHP Bruce Chen received a shot for a bulging disk in his lower back and will miss a start. Chen will attempt to a throw a side session Thursday and if that goes well would start Saturday against Detroit. ... Getz had his contract purchased from Triple-A Buffalo, where he hit .309 in 18 games. The Jays optioned rookie IF Ryan Goins, who was hitting .150 with two extra-base hits in 60 at-bats, to Buffalo. ... The start of the game was delayed 27 minutes by rain. ... The Royals scored a season-high 10 runs and are 13-0 when scoring four or more runs.