The Kansas City first baseman dropped a hit into left field allowing Omar Infante to score Omar Infante from second base.
It was the fourth and final lead change as the Royals (28-30) beat the Cardinals (30-29) in St. Louis for a second night in a row, 8-7.
After being shut out Monday night, the Cardinals responded early Tuesday.
Rookie Kolten Wong hit a grand slam -- his first career home run -- in the second inning to anchor St. Louis to a 4-0 lead.
Kansas City didn't have an answer until the fifth inning.
The Royals strung together four consecutive hits -- three of them going for extra bases -- to get within one of the Cardinals. Two batters later, Alex Gordon delivered the biggest blow. A three-run home run from the left fielder put Kansas City ahead 6-4.
That inning wrapped up Jaime Garcia's night. St. Louis' starter allowed six earned runs on eight hits in five innings.
The Cardinal offense bailed Garcia out with two runs in the bottom of the fifth.
Peter Bourjos put St. Louis back on top with a solo home run to lead off the bottom of the sixth, knocking Kansas City starting pitcher James Shields out of the game.
Shields gave up seven runs, five earned, on nine hits and 5 1/3 innings.
The Redbird bullpen couldn't hold the lead after the bats took it back.
Salvador Perez scored on an Alcides Escobar in the eighth to tie it, and Hosmer delivered the final blow in the ninth.
St. Louis closer Trevor Rosenthal takes the loss giving up one run on two hits in the final frame.
Gordon led the way for Kansas City totaling two hits and three RBI. Escobar, Hosmer and Shields all finished with a pair of hits as well.
Kansas City's Jason Vargas meets St. Louis' Adam Wainwright Wednesday night at 7:10pm as the I-70 Series shifts back to Kauffman Stadium.