KANSAS CITY, Mo. (AP) - Lorenzo Cain hit his first career grand slam, Salvador Perez provided a bases-loaded double in the eighth inning and the Kansas City Royals rallied for a 10-7 victory over the Cleveland Indians on a sun-splashed Thursday afternoon.
The Royals trailed 5-0 early before Cain's slam and a solo shot by George Kottaras tied it in the sixth. The Indians regained the lead on Carlos Santana's two-run double in the seventh, but the Royals answered in the bottom half on a two-run homer by Eric Hosmer.
Indians reliever Bryan Shaw (0-2) walked Kottaras to lead off the eighth and then hit Johnny Giavotella. Shaw was lifted for Rich Hill, who promptly walked Jarrod Dyson to load the bases.
Perez entered the game as a pinch-hitter and roped a double down the left-field line, slapping his hands together on the way to first as the Royals cleared the bags for a 10-7 lead.
Luke Hochevar (2-1) worked a scoreless eighth inning for the Royals, and Greg Holland worked around a single in the ninth for his second straight save and his 19th on the season.
The Royals scored at least 10 runs for only the fourth time this year - despite only six hits - by taking advantage of eight walks and a costly hit batter by the Indians.
Drew Stubbs homered and drove in four runs, and Michael Brantley had four hits and also drove in a run for Cleveland, which had won five straight and pulled into first place in the wide open AL Central before losing its last two games to the Royals in wild fashion.
Hosmer's go-ahead shot in the seventh on Wednesday night gave Kansas City a 6-5 victory.
Things looked good for the Indians right from the start on Thursday. Michael Bourn led off the game with a single and later scored on another single by Brantley.
Royals starter James Shields then gave up a double to Mike Aviles to start the second inning, moments before Stubbs went deep for the seventh time this season to give Cleveland a 3-0 lead.
Shields put the Indians' leadoff batter on base for the fourth time when Santana singled in the sixth. Aviles added a one-out single and Lonnie Chisenhall walked to load the bases for Stubbs, who delivered a two-run single that made it 5-0 and knocked Shields from the game.
The prize acquisition in a blockbuster trade with Tampa Bay, Shields went 29 consecutive starts of at least six innings before lasting five against the White Sox on June 23. His early ouster on Thursday made it fewer than six in two of his last three starts.
Ubaldo Jimenez had allowed just two hits and kept the Royals in check until the sixth inning, when he led it off by walking his fourth and fifth batters of the game. An error on Jimenez while trying to cover first loaded the bases with nobody out.
Cain came to the plate and hit a 3-2 pitch to center for his first career grand slam, and the second of the series by the Royals. Alex Gordon hit one in Tuesday night's opener.
Kottaras, getting the start at catcher for Perez, added his tying shot to right moments later. It was only his third of the season but the second time Kottaras has been involved in back-to-back home runs: He did it with Dyson on June 23 against the White Sox.
Jason Kipnis, who earlier extended his hitting streak to 15 games, drew a leadoff walk and Brantley singled off Gutierrez in the seventh before Santana's double made it 7-5.
Hosmer matched both runs in the bottom half with his seventh homer in his last 12 games.
That's how the game remained until Perez cleared the bases with his double in the eighth, the three RBI boosting the Royals to their seventh straight win in a game Shields has started.
NOTES: The Royals (24-19) began the day with the AL's second-best winning percentage on July 4. The Indians (88-73) had the fifth-best percentage. ... Royals RHP Wade Davis will start Friday against Oakland. Indians RHP Justin Masterson will take the mound against Detroit.