Heyward went 2-for-4 with three RBI, including a solo shot in the seventh inning off Tim Collins (2-2) that broke a 3-3 deadlock.
The Royals, however, mounted a major challenge in the bottom of the ninth against closer Craig Kimbrel, putting Mike Moustakas at third and David Lough at second with one out.
Jordan Schafer supplied two hits and an RBI for National League East-leading Atlanta, which took the opener of a two-game interleague series.
Kris Medlen (5-7) held Kansas City to three runs on seven hits over seven innings to earn the victory.
Eric Hosmer clouted a a two-run homer for the Royals.