Detroit shortstop Alex Gonzalez singled off Greg Holland in the bottom of the ninth inning to score the game-winning run.
Shields gave up three earned runs on five hits and a walk while striking out three batters.
Aaron Crow entered the game with one out in the seventh inning and runners on the corners in relief of Shields with KC on top 3-1. Crow struck out Nick Castellanos on a wild pitch allowing Austin Jackson to score, then surrendered the game-tying triple to Gonzalez.
Wade Davis pitched a scoreless eighth inning for Kansas City to preserve the tie, but put two runners on base in the bottom of the ninth before getting pulled from the game giving way to Holland.
Crow ended up with a blown save, while Davis took the loss for the Royals.
The Tigers took the lead in the second inning on a Victor Martinez solo home run.
Kansas City fired back with three runs in the fourth -- Salvador Perez doubled home Alex Gordon, Lorenzo Cain followed with an RBI single and Omar Infante walked in a run.
Perez went 4-4 in the game with an RBI and a run scored. The rest of the Royals lineup went a combine 3-31.
The Royals are off Tuesday. Kansas City and Detroit meet again Wednesday with Jason Vargas making his debut for the Royals.