The Blue Jays pounded out a dozen hits, including home runs from Jose Bautista and Edwin Encarnacion, and got six strong innings from Dustin McGowan.
It was all undone by two poor innings from Toronto's bullpen.
With the Blue Jays leading the Kansas City Royals by three runs, McGowan was pulled after giving up a double to Alex Gordon to lead off the seventh.
Four Blue Jays relievers combined to yield seven runs on eight hits while retiring only six batters in a 10-7 loss to the Royals on Tuesday night.
It got so bad manager John Gibbons brought in closer Sergio Santos for a five-out save with the Blue Jays clinging to a one-run lead with runners on the corners in the eighth inning.
Instead Santos was charged with a blown save, allowing three runs on two hits and a walk, while retiring only one.
"We were trying to win that game," Gibbons said. "It started going the other direction. They had Salvador Perez up there. We're bringing (Santos) in looking for a strikeout. He's our top guy in there to get strikeouts."
Perez homered and drove in four runs. Perez's two-run double off Santos in the Royals' six-run eighth put the Royals ahead. Perez's four RBIs matched his career high.
The Royals sent 10 men to the plate in the eighth, which also included Omar Infante driving in two runs, while Nori Aoki and Jarrod Dyson added RBI singles.
Perez, who has three consecutive multi-hit games, homered in the seventh off Steve Delabar with Alex Gordon aboard to trim Toronto's lead to 5-4.
"It's tough," Delabar said. "The boys came out swinging on a night like tonight. To come in and not make pitches, and when we do throw it over the plate they hit it, it's a tough day."
Bautista also walked twice and leads the American League with 29 walks, a .470 on-base percentage and a 1.084 OPS. His 29 walks are one shy of a club record for a month.
Melky Cabrera, who tops the majors with 41 hits, contributed a double, triple and drove in two runs to extend his hitting streak to 11 games, but it was not enough as the faulty bullpen imploded.
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. I almost felt like I got stronger. That's encouraging. Hopefully I can move forward."
McGowan hopes his performance keeps him in the rotation.
"I thought I threw the ball really well tonight," he said. "I don't make the decisions. We'll see."
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 and 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 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.
NOTES: Royals LHP Bruce Chen received a shot for a bulging disc in his lower back and will miss a start. Chen will attempt to a throw a side session Thursday and if 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.
Copyright 2014 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.