James Shields kept Cleveland off balance for six innings and Salvador Perez led a scrappy Kansas City offense as the Royals won the opener of a three-game set 7-1 with significant playoff implications.
Shields struck out a season-high 10 for the Royals (79-71), who moved within 2 games of the second AL wild-card berth. The Indians (81-69) remained a half-game back of Texas.
Angels pitcher C.J. Wilson allowed four hits over seven innings for his career-best 17th win as Los Angeles downed Oakland 12-1 to become the first team in nearly four months to beat Athletics starter Jarrod Parker.
In the other AL game, the Chicago White Sox trounced the Minnesota Twins 12-1 and the Cincinnati Reds beat the Houston Astros 6-1 in interleague play.
In the NL, Cliff Lee had three hits for a career-high four runs and struck out a season-high 14 batters to lead the Philadelphia Phillies to a 12-2 win over the Florida Marlins.
Caleb Gindl had three hits, including a two-run home run, as Wily Peralta pitched six strong innings to lead the Milwaukee Brewers past the Chicago Cubs 6-1, while the Arizona Diamondbacks defeated the Los Angeles Dodgers 2-1.