An emotional Jose Reyes was carted off the field in the sixth inning with an air cast stabilizing his left ankle.
Reyes, who is batting .395, greeted reliever Luke Hochevar with a two-run single, making it 8-4, but injured his left leg while stealing second base.
The Blue Jays scored five runs in the first three innings to seize an early lead.
J.P. Arencibia singled home Melky Cabrera with the first run. Adam Lind's run-producing double to right made it 2-0, bringing home Edwin Encarnacion, who had walked.
Jays left-hander J.A. Happ, however, needed 41 pitches in the bottom of the first when the Royals scored three runs. Lorenzo Cain contributed a two-run single, while Salvador Perez singled home Alex Gordon with the first run.
The Jays regained the lead in the second with the help of the Royals. Colby Rasmus, who extended his hitting streak to seven games, and Bonifacio led off the inning with back-to-back doubles. Bonifacio took third on the throw home and scored on catcher Perez's throwing error.
Mike Moustakas' throwing error in the third gifted the Blue Jays with another run. Encarnacion, who reached on the error, scored on Adam Lind's sacrifice fly. After not committing an error in their first seven games, the Royals made three errors in the first three innings.
Happ settled down after the first, retiring the next 10 batters before Elliot Johnson led off the fifth with a bunt single. Johnson stole second and scored on Alcides Escobar's double, cutting the Blue Jays' lead to 5-4.