The Braves have won two straight and 17 of 19 to lead the majors with a .612 winning percentage.
Philadelphia, which has lost seven of eight series since All-Star break, has dropped 19 of 23. The Phillies have lost 14 of 15 on the road.
Rain delayed the start of the game 1 hour, 48 minutes.
Beachy (2-0) held the Phillies scoreless until Dominic Brown's 27th homer cut the lead to 5-2 with one out in the sixth.
John Lannan (3-6) lasted only 1 1-3 innings before leaving with a left knee injury.
Beachy, making his fourth start since returning from elbow ligament replacement surgery, allowed five hits, two runs and no walks. The right-hander struck out four, beating Philadelphia for the first time in nine career starts.
Craig Kimbrel converted his 28th consecutive save opportunity and 38th in 41 chances, striking out John Mayberry Jr., retiring Carlos Ruiz on a flyout and pinch-hitter Kevin Frandsen on a groundout.
Kimbrel entered the game with none out in the ninth after David Carpenter allowed a leadoff homer to Darin Ruf and walked Cody Asche.
The Braves went up 2-0 in the first on Heyward's leadoff homer and Johnson's sacrifice fly.
Lannan escaped further damage with runners on first and third when B.J. Upton took a called third strike, but his troubles continued in the second with a one-out walk to Beachy.
Heyward doubled on a liner off third baseman Asche that advanced Beachy to third, and after Justin Upton walked on five pitches, Lannan's night was over.
Atlanta took a 5-0 lead after the next Philadelphia pitcher, Zack Miner, gave up Freddie Freeman's sacrifice fly and Johnson's two-run single.
Lannan gave up four hits and five runs with three walks and one strikeout. Coming off a 9-2 loss last Friday at Washington in which he allowed a career high-tying eight earned runs, he is 1-5 with a 10.50 ERA in his last six road starts.
Philadelphia, which stranded runners in scoring position three times in the first four innings, has been outscored 85-30 over its last 15 road games.
Beachy, who left for a pinch-hitter in the sixth, improved to 1-3 and lowered his ERA to 3.67 in nine career starts against Philadelphia.
Luis Ayala and Luis Avilan combined to allow one hit with one strikeout in the seventh and eighth for Atlanta before Ruf's seventh homer made it 6-3.
Heyward's 11th homer gave him 12 RBIs since moving to the leadoff spot on July 27 — a span of 18 games in which he's hit .382 and scored 20 runs.
NOTES: Heyward was nearly charged with his first error of the season when he ran in from right field, knocked over 2B Tyler Pastornicky and dropped Jimmy Rollins’ pop fly in the third. An official scoring change announced in the sixth gave Rollins a double. ... Pastornicky left before the top of the fourth with a sprained left knee. The Braves announced that he will be re-evaluated today. ... SS Andrelton Simmons, whom manager Fredi Gonzalez wanted to give the night off, took his place on the field and went 1-for-2 with one run scored. Paul Janish moved to second. ... Janish was hitless in his last 27 at-bats, dating back to Aug. 31, 2012, at home against Philadelphia, before his third-inning single. ... Three of Philadelphia's eight hits were infield singles. ... Braves CF B.J. Upton went 0-for-4, lowering his batting average to .188, with one strikeout and three stranded runners.