Dexter Fowler tripled to lead off the Chicago third and scored on Heyward's sacrifice fly. Kris Bryant walked and reached third on Anthony Rizzo's single, but Royals starter Ian Kennedy then struck out Soler to end the inning.
The Royals tied the game at 1 with one out in the fourth when Paulo Orlando singled, stole second and scored on Reymond Fuentes' double.
In the Kansas City fifth, Tony Cruz singled and reached third when Terrance Gore singled and moved up on Rizzo's throwing error.