Kris Medlen (15-12) gave up two of the hits over eight innings and Craig Kimbrel worked a perfect ninth to earn his major league leading 50th save.
The Braves won their 95th game of the season, having begun the night tied with St. Louis for the best record in the National League.
Medlen took a no-hitter into the sixth inning, but Cesar Hernandez singled with two out in that frame before being thrown out trying to steal second. Philadelphia's other hit came from Chase Utley in the seventh, but he was erased in a double play.
The Atlanta starter walked two and struck out seven.
Philadelphia's Chris Lee (14-8) went the distance in taking the loss, giving up three hits without a walk and striking out 13. It was the 28th complete game of Lee's 12-year career.