The Tigers broke out on top late after being locked in a 1-1 tie for much of the contest.
Andy Dirks led off the eighth with a single off Royals starter Bruce Chen (0-1). Greg Holland came in to pitch and, after fanning Austin Jackson, yielded a single to Brennan Boesch, sending Dirks to second.
Cabrera then drove Dirks in with a bouncer up the middle and Prince Fielder followed with an RBI single.
The Tigers clinched their three-game set with Kansas City with their eighth win in 11 games to start the season.
Billy Butler went 3-for-4 for the Royals.