KANSAS CITY, Mo. -- Salvador Perez delivered a pinch three-run double in the eighth inning to break a tie and Lorenzo Cain hit his first career grand slam as the Kansas City Royals rallied from a five-run deficit to beat the Cleveland Indians 10-7 on Thursday afternoon.
George Kottaras and Eric Hosmer also homered for the Royals, who won back-to-back games for the first time since June 16-17.
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 Eric 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.
Cody Allen was summoned from the bullpen but yielded a home run to Kottaras on his second pitch to tie the score at 5.
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.
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.
Jimenez, who went 3-1 in June, gave up only three hits but allowed four runs in five-plus innings.
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-AAA 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 on 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.