McCann’s 16th homer, a two-run shot, gave the Braves a 4-2 lead just two batters after Justin Upton tied it on an RBI single. Johnson’s homer gave the Braves a 5-2 lead.
Johnson extended his hitting streak to 11 games with his seventh homer. He also had a seventh-inning double to extend his streak of multihit games to eight games. It is the most for any Braves player since the franchise moved to Atlanta in 1966.
Kris Medlen (8-10) earned the victory, going six innings while giving up six hits and four runs, including three solo homers. He struck out eight and walked one.
Darin Ruf, Delmon Young and Chase Utley homered for Philadelphia, which has lost 11 of 13 since the All-Star break.
David Carpenter struck out the Philadelphia side in the seventh, Jordan Walden fanned two in the eighth and Craig Kimbrel got two in the ninth for his NL-best 32nd save.
In his major-league debut, Ethan Martin (0-1) struck out five through his first three innings while allowing just one run and two hits and a walk.
But after escaping a bases-loaded, one-out jam in the fourth, he struggled in the fifth and got just one out before leaving the game. He allowed six runs and eight hits overall.
Ruf gave the Phillies a 1-0 lead in the second inning when he sent a full-count fastball into the left-field bleachers for his third home run of the season.
On the next pitch, Delmon Young hit one out to right to make it 2-0.
Jason Heyward got the Braves on the board with an RBI single in the third.
Utley homered and Cody Asche added an RBI groundout in the sixth to close out the scoring.
Phillies manager Charlie Manuel and shortstop Jimmy Rollins were ejected in the ninth inning arguing an apparent foul tip by Young that was called strike three.
NOTES: Ruf has reached base in 30 straight games, going back to last season — the longest active streak in the majors. He’s hit .310 over that span, with 15 of 31 hits going for extra bases. ... Over his 11-game hitting streak, Chris Johnson has gone 21-for-44 and raised his average to .347. ... Philadelphia placed rookie RHP Jonathan Pettibone (5-4, 4.04 ERA) on the 15-day disabled list prior to the game with a right shoulder strain. The Phillies also designated RHP J.C. Ramirez for assignment and promoted RHP Zach Miner from Triple-A Lehigh Valley. ... Curt Schilling, who spent eight-plus seasons of his 20-year career with the Phillies, was inducted into the Philadelphia Baseball Wall of Fame prior to the game. ... John Lannan (3-4, 4.10 ERA) will start today for Philadelphia on three days’ rest. Lannan has never pitched on short rest in his career. ... Brandon Beachy will go for Atlanta today, making his second start back following Tommy John surgery. ... Cliff Lee, scratched from his last start with a stiff neck, will take the mound Sunday for the Phillies.