The win kept Cleveland a half-game behind Texas and Tampa Bay in the American League wild-card race.
Kansas City led 3-0 after five innings, but the Tribe scored at least one run in the final four innings to steal the victory.
Bourn went 2-for-4 and walked once. His solo home run in the ninth accounted for Cleveland's fifth run.
Cody Allen (6-1) picked up the win with just 2/3 of an inning of work. Chris Perez struck out two Royals in the ninth and was credited with his 25th save.
Wade Davis (7-11) took the loss in relief for Kansas City. Mike Moustakis doubled twice and drove in a run.
Hard-throwing Royals rookie Yordano Ventura made his first Major League start. He allowed one run on five hits, two walks and struck out three in 5 2/3 innings.