The Royals scored three times in the first and that was plenty for Shields (4-3). He struck out four, walked two and threw 118 pitches.
Two relievers finished for the Royals. The Padres were shut out for a major league-high sixth time this season. San Diego has lost six of eight overall.
Andrew Cashner (2-5) lasted a season-low four innings.