The Braves, runaway leaders in the National League East, moved 20 games over the .500 mark.
Philadelphia had a 2-1 lead heading into the fifth, but the Braves struck for five runs while batting around in the inning.
Jason Heyward doubled leading off against Ethan Martin (0-1), who was making his major league debut, and scored on Justin Upton's single. McCann came up one out later and at the end of an eight-pitch at-bat hit a home run to right.
Kris Medlen (8-10) worked six innings to get the win, allowing four runs on six hits with eight strikeouts. Craig Kimbrel struck out two in the ninth for his 32nd save.
Martin was charged with six runs on eight hits over 4 1/3.
McPhee, Cokas 'working on their marriage' after affair
Attkisson leaves CBS News, reportedly over network's 'liberal bias'