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.
Ohio bar shooting arrested, charged with murder
McPhee, Cokas 'working on their marriage' after affair