Shields (10-6) retired his first 15 batters before Josh Reddick hit a leadoff homer in the sixth. Alberto Callaspo then had a one-out single before Sam Fuld lined into an double play.
The 32-year-old Shields (10-6) allowed two runs and four hits. He walked none for the fifth time this season.
Billy Butler and Omar Infante had three hits apiece for Kansas City.
Reddick homered twice, getting to Shields again in the eighth.
The A's have the best record in baseball at 67-43, but have sputtered offensively since trading cleanup hitter Yoenis Cespedes to Boston on Thursday in a deal for ace Jon Lester. They lead the stacked AL West by one game over the Los Angeles Angels, who beat Tampa Bay 7-5 on Sunday.
Oakland was without injured leadoff hitter Coco Crisp, though it hardly mattered the way Shields was pitching.
Shields allowed only three balls out of the infield through the first five innings. One of them was a deep fly to center by Josh Donaldson in the first, the closest Oakland came to getting a man on base before Reddick's home run.
Shields got his first win since he beat his former team, Tampa Bay, on July 7.
Greg Holland pitched the ninth for his AL-leading 31st save.
The Royals won despite hitting into four double plays.
Nori Aoki's RBI single in the fifth gave Kansas City a 1-0 lead. Infante followed with a two-run double and later scored on a single by Salvador Perez.
All the runs came against Scott Kazmir (12-4).
Reddick has four home runs since coming off the disabled list July 22. It's the sixth multihomer game of his career and second this season.
Athletics: Infielder Nick Punto was placed on the 15-day disabled list after he strained a hamstring rounding third base on Saturday. ... Crisp (neck) took swings in the batting cage but there is still no timetable for his return. Crisp has not played since July 26.
Royals: Left-hander Danny Duffy (5-10) pitches the series opener in Arizona on Tuesday. Duffy's 2.42 ERA is the fourth-lowest in the AL among pitchers with at least 100 innings.
Athletics: Right-hander Jeff Samardzija (2-1), who has allowed at least one home run in each of his previous four outings, starts against Tampa Bay on Monday.