Derek Lowe (2-0) backed the Braves' attack with six innings of one-run ball, overcoming seven walks to hand the Giants their first loss of the season after a 4-0 start.
Heyward's home run off San Francisco starter Todd Wellemeyer (0-1) came in the sixth inning and was hit just far enough to get over the left field wall and tie the game at 1-1.
His RBI single off Dan Runzler in the seventh got past a diving third baseman Pablo Sandoval, giving Atlanta a 4-1 lead.
Juan Uribe and Aaron Rowand each collected an RBI as the Giants offense was limited to just six hits.
LGBT community has 'bullied the American people': Bachmann
Beautician charged with giving client fatal silicone butt injection