KANSAS CITY, Mo. (AP) -- James Shields kept the Indians off balance for six innings, Salvador Perez led a scrappy Kansas City offense and the Royals pounded Cleveland 7-1 on Monday night to open a three-game set with significant playoff implications.
Shields struck out a season-high 10 for the Royals (79-71), who moved within 2 1/2 games of the AL's second wild-card berth. The Indians (81-69) remained a half-game back of Texas, which lost to Tampa Bay earlier in the night in a matchup of teams leading the wild-card race.
Shields (12-9) allowed only Lonnie Chisenhall's solo homer before turning the game over to his stingy bullpen. Wade Davis, Luke Hochevar and Tim Collins did the rest in a steady drizzle.
Scott Kazmir (8-9) gave up four runs in 5-plus innings for the Indians. He didn't get a whole lot of help from his offense, which racked up a season-high 17 strikeouts.
Perez finished with three hits and was among six different players to drive in a run for Kansas City, which is chasing its first postseason berth since winning the 1985 World Series.
Accustomed to pitching in meaningful September games, Shields kept the Indians guessing all night. The former Rays ace struck out Yan Gomes to leave two aboard in the fourth - roaring as he walked off the mound - and then fanned three in the fifth after Chisenhall went deep.
The only other trouble Shields had occurred in the first. Nick Swisher reached on a single before Carlos Santana sent a two-out double down the right-field line. Swisher was held at third base, and then was stranded when Michael Brantley grounded out to end the inning.
Butler started the scoring by driving in Emilio Bonifacio with a two-out single in the first, and then Kansas City tacked on another run in the third thanks to some hustle.
Alex Gordon struck out swinging but raced to first base when Kazmir's wild pitch went to the backstop. He reached third on Eric Hosmer's single and scored on Perez's two-out base knock.
Kansas City pulled away in the sixth with the help of shoddy Indians fielding.
Perez and Cain opened the inning with back-to-back triples for a 3-1 lead, and David Lough added a pinch-hit single to provide the Royals with another run.
Alcides Escobar reached base when shortstop Asdrubal Cabrera fielded his grounder and threw wide of first for an error, and then Bonifacio hit a dribbler toward Chisenhall at third that he mishandled for another error. The second in a span of three batters resulted in a 5-1 game.
The Royals added a pair of runs in the seventh inning to put it away.
Notes: RHP Yordano Ventura will make his big league debut for the Royals on Tuesday night in place of LHP Danny Duffy, who has inflammation in his surgically repaired elbow. Ventura was 5-4 with a 3.74 ERA at Triple-A Omaha. ... Indians RHP Justin Masterson (oblique strain) threw from 110 feet before the game. Manager Terry Francona said he's hopeful Masterson will be available down the stretch. ... RHP Corey Kluber will start for the Indians on Wednesday night.