Marlon Byrd homered and Tyler Colvin added a triple and a run for the Cubs, who committed four errors.
Brandon Beachy (7-2) won his fourth straight decision, recovering from a shaky start to pitch six innings. He allowed six hits, two earned runs and struck out eight.
Matt Garza (6-10) allowed six runs -- three earned -- and eight hits over five innings. He struck out six.
The Braves took three of four from the Cubs and have won 16 of their last 21 games. Atlanta won its NL-high 38th road game.
Garza was coming off one of his best starts of the season in a 3-0 win over St. Louis last Saturday.
After Bourn led off the game with a single, Martin Prado reached when Garza dropped a flip from Carlos Pena at first. Garza then fell behind McCann, who homered into a stiff wind in right-center and put the Braves ahead 3-0 before Garza had retired a batter.
Prado reached on errors twice in the game, doubled, walked and scored two runs.
The Cubs cut into the lead on Darwin Barney’s groundout in the bottom of the first. In the second, Byrd brought Cubs within a run with a homer to left. Colvin tripled into the right-field corner and scored on Geovany Soto’s dribbler, tying the game at 3.