Alex Gordon drove in two runs and scored once for the Royals, who have won three of four. Danny Duffy (2-0) allowed one run on seven hits while striking out seven and walking two over seven-plus innings.
Rajai Davis drove in the lone run for the Tigers, who went 2-for-8 with runners in scoring position and stranded seven. Alfredo Simon (4-1), who had won his first four starts of the season, gave up six runs on nine hits with six strikeouts over 4 1/3 innings.
The Royals broke a scoreless tie with a three-run third. Gordon singled and raced home on Mike Moustakas' double to right. Hosmer homered to center two batters later.
Kansas City tacked on five more runs in the fifth. Lorenzo Cain singled, stole second and scored on Kendrys Morales' double to right. Salvador Perez followed with an RBI double to left-center field, chasing Simon from the game.
Alex Wilson recorded the second out of the inning before giving up three straight singles to Jarrod Dyson, Christian Colon and Gordon, which plated three more runs.
The Tigers finally got on the board in the eighth. Jose Iglesias led off with a triple and crossed the plate on Davis' single to left. Jason Frasor replaced Duffy and recorded the final three outs of the inning.
Duffy improved to 2-6 lifetime against the Tigers ... Dyson went 3-for-4 with a run scored for the Royals, who pounded out 14 hits.