The games were the second and third of a five-game series and the day's results allowed the Royals to move within 5 1/2 games of the division-leading Tigers in the American League Central. Kansas City won the opener 2-1.
Shields (8-8) gave up three hits and walked four to win for the fourth time in five starts. Luke Hochevar worked a perfect eighth inning and Greg Holland worked around a leadoff single in the ninth to collect his 34th save.
Jose Alvarez (1-3) was charged with the loss after giving up two runs on five hits in 5 2/3 innings.