KANSAS CITY, Mo. -- A five-run hole was not too big for the Kansas City Royals to climb out of Thursday afternoon.
Salvador Perez delivered a pinch-hit three-run double in the eighth inning to break a tie and Lorenzo Cain hit his first career grand slam as the Royals rallied to beat the Cleveland Indians 10-7.
George Kottaras and Eric Hosmer also homered for the Royals, who won back-to-back games for the first time since June 16-17.
"They've been picking up the pitching lately," Royals manager Ned Yost said of his offense. "I feel like we're over the hump. When you get 10 runs on six hits, you're slugging. It was a big home run by Lorenzo, and Eric, and Kottaras to tie the game. Even down 5-0 we still felt like we were in that game and it turned out to be true.
"Earlier, a 5-0 score was almost a death sentence, but it doesn't fell like that now. This is not magic. This is no fluke. We knew we had some power coming into the season."
Kottaras led off the eighth with a walk and Johnny Giavotella was hit by a pitch. After a passed ball moved up the runners, Jarrod Dyson was walked intentionally to load the bases before Perez's double.
Drew Stubbs homered and drove in four runs for the Indians.
Stubbs' home run came in the second with Mike Aviles aboard. His one-out single in the sixth scored Carlos Santana and Aviles, who had both singled, and finished Kansas City starter James Shields. That put the Tribe up 5-0, but it lasted only five batters.
Indians starter Udaldo Jimenez walked Hosmer and Billy Butler to start the Royals' sixth. Jimenez then committed a fielding error, allowing Mike Moustakas to reach first and load the bases.
Cain quickly unloaded them with his first grand slam to center on a full-count pitch. His four RBIs were a career high.
"I stayed off the bad pitches and put a good swing on it," Cain said. "I thought it'd get in the gap, a double, but it kept carrying."
Cody Allen was summoned from the bullpen but yielded a home run to Kottaras on his second pitch to tie the score at five.
"Cain's slam was a huge momentum swing for us," Kottaras said. "We were making a lot of quick outs. It's definitely the biggest play of the game."
The Indians regained the lead in the seventh with Santana's two-run double on the first pitch from Aaron Crow. J.C. Gutierrez started the inning by walking Jason Kipnis and giving up a single to Michael Brantley, who had four hits.
That two-run Cleveland lead was also short-lived. In the bottom of the seventh, Hosmer belted a two-run homer off Joe Smith to tie the score. It was Hosmer's eighth home run in his past 19 games.
"You can't walk the leadoff the hitter, not in a two-run game," Smith said. "And you've got a guy like Hosmer, who over the last 10 games has been hot and swinging the bat real well. You get behind him and don't want to walk two guys. The next thing you know the ball is going over the fence and it's a tie ball game.
"That's not the way you want to start an inning. We (bullpen) didn't get the job done the last two nights. I didn't get the job done today. We stunk the last two days. It leaves a sour taste in your mouth."
Shields was removed after 5 1/3 innings, the second time in three starts he has failed to make it through six innings, allowing five runs, nine hits and two walks.
"In the sixth, seventh and eighth, we walked the leadoff hitter every inning," Indians manager Terry Francona said. "We just put ourselves in a tough position even though we scored seven runs. When you're facing Shields, you think you score seven that's going to be good."
Jimenez, who went 3-1 in June, gave up only three hits but allowed four runs in five-plus innings.
"I just lost the strike zone," Jimenez said. "I didn't have my slider (in the sixth) against other hitters and had to throw my fastball."
Bryan Shaw, the fourth of six Cleveland pitchers, took the loss.
Luke Hochevar (2-1) worked a flawless eighth to pick up the victory. Greg Holland finished to log his 19th save.
NOTES: Kipnis extended his career-best hitting streak to 15 games with a single to lead off the Indians' third. He has reached base in 35 consecutive games via hit, walk or hit by pitch. ...The Royals signed former Indians 1B Ben Broussard to a Triple-A contract. Broussard, who was hitting .302 with Long Island in the independent Atlantic League, has not played in the majors since 2008. ...Royals LF Alex Gordon is expected to be out a few days with a possible concussion and bruised right hip. He was injured while banging into the bullpen fence Wednesday. The Royals are hopeful that Gordon would not have to go on the disabled list. He passed early concussion tests but still has some remaining.