The Twins had been protecting a 1-0 lead since the fourth, when Ben Revere scored on a wild pitch thrown by starter Luke Hochevar.
Matt Capps took the mound in the ninth for the Twins and walked Melky Cabrera on four pitches to start the inning. Cabrera stole second, but Alex Gordon grounded out to third and Billy Butler lined out to right to move the Twins within one out of a victory.
Hosmer, however, homered to center on an 0-1 pitch. Capps (2-5) has blown seven of his 22 save opportunities this year.
Joakim Soria wound up getting his 16th save for the Royals, but he had to work his way out of trouble in the ninth to do so.
Minnesota put runners on first and third with one out before pinch-runner Matt Tolbert was thrown out at home trying to score on a grounder back to the pitcher by Luke Hughes. Tsuyoshi Nishioka then grounded out to end the game.
Tim Collins (4-4) got the win by working the eighth.