It's Kansas City's third straight win and the eighth in their last ten as they try to stay afloat in the in the AL Wild Card race.
The Royals (72-66) hung the first three runs of the game, beginning in the first inning with Alex Gordon's 16th homer of the season.
Salavador Perez knocked another solo shot, his tenth long ball, to make it 2-0 in the fourth before Billy Butler drove in Emilio Bonifacio in the fifth.
Bruce Chen recorded two strike outs while surrendering six hits and two runs over six innings. His lone scoring shot came to Kyle Seager via a two-run home run in the sixth.
Kelvin Herrera then gave up the game-tying tally in the seventh when Brad Miller grounded into a fielder's choice.
Luke Hochevar (4-2) pitched 2/3 of a scoreless inning to secure the victory.