Jeff Francis (2-5) got the win after allowing three runs on eight hits over seven innings.
Joel Pineiro (2-2) took the loss. He allowed six runs -- four earned -- on nine hits in six innings. Mark Trumbo had two hits and an RBI for the Halos, who had won two in a row.
The Royals, who ended a three-game losing streak, scored five runs in the third inning to take a 5-2 lead that held up the rest of the way. Hosmer doubled in two runs in the frame and then scored on a single to left by Billy Butler.
Hosmer scored again in the fifth inning on Francoeur's two-out RBI single.