Fister (8-5) allowed only one run on six hits, walking one and striking out five while working out of jams in three of his six frames.
Drew Smyly and Bruce Rondon followed with one inning each of scoreless relief and Joaquin Benoit finished up with his ninth save as the American League Central-leading Tigers avoided a three-game sweep.
The Royals' James Shields (4-7) was tagged with the loss, allowing three runs on nine hits over seven full frames.
Miguel Tejada went deep for Kansas City.
Exploding whale video goes viral on Internet
Selena Gomez drops F-bomb, walks off stage during Jingle Ball performance