ATLANTA -- Freddie Freeman loved watching Jason Heyward slide hard into second base to break up a double play in the third inning.

Without Heyward's hustle and Justin Upton's beating the throw to first base, Freeman wouldn't have had a chance to hit a three-run homer.

"It's a testament to what they do," Freeman said. "They never give up. Even it's an eight-run (lead), they're running hard."

Freeman, Dan Uggla and Brian McCann homered, powering the Atlanta Braves past the Arizona Diamondbacks 6-2 Sunday for a three-game sweep in a matchup of division leaders.

Paul Maholm (9-6) gave up two runs and eight hits in 6 2/3 innings for the Braves, who improved to a big league-best 28-11 at home.

Trevor Cahill (3-10) allowed six runs and seven hits in 4 1/3 innings as the NL West-leading Diamondbacks lost for the fifth time in six games. Cahill is 0-6 with a 7.91 ERA in eight starts since a May 17 win at Miami.

"Trevor, he couldn't even find half of the plate," Arizona manager Kirk Gibson said. "He made 104 pitches in 4 1/3 innings. That's more of the same. We've got to try to get him straightened around."

Arizona has gone 22 straight games without a win from its rotation, the longest streak in the majors since San Diego went 25 in a row from April 17-May 14, 2009, according to STATS.

"This whole series, we were way behind all these guys" Gibson said. "We didn't really throw good, quality strike ones, and they pounded those. They got ahead in the counts and they did a much better job than we did. Again, they just outplayed us."

The first of Paul Goldschmidt's two run-scoring, double-play grounders put Arizona ahead in the first, but McCann tied the score in the second with an opposite-field homer that bounced off the top of the wall in left-center.

Freeman's three-run homer made it 4-1 in the third, and Uggla added a two-run drive in the fifth, his 14th home run of the season, for a 6-1 lead.

Atlanta scored 13 runs from the eighth inning of Saturday's win through the fifth on Sunday. Uggla said the offense wanted even more.

"You can't ever pick and choose when you're going to score runs," Uggla said. "You've got to grind out at-bats. You've got to battle and have some timely hitting, so you've got to ride the wave when it comes."

Maholm labored in the seventh, giving up consecutive singles to Cody Ross and Gerardo Parra and a one-out walk to Cliff Pennington. Maholm struck out pinch-hitter Jason Kubel, and Anthony Varvaro relieved and retired A.J. Pollock on a flyout

Kubel began the game with a .417 average in 12 career at-bats against Maholm.

"He's done well against me, and it's probably my last hitter," Maholm said. "I just tried to mix it up and dropped my arm angle on two of the pitches, but it's left-on-left and I have all the confidence in getting a guy out."

Game notes

Freeman homered in consecutive games for the second time this season and first since May 30-31 against Toronto and Washington. ... Cahill had not allowed three homers since Oakland's 10-2 loss at Toronto on April 30, 2010. ... Goldschmidt, who leads the NL with 67 RBIs, went 1 for 9 and stranded four runners in the series. ... The Braves improved to 8-1-4 in home series. ... Maholm beat the Diamondbacks in his second straight start after going 0-3 in his first six career starts against them. ... Arizona RHP Tony Hill pitched a scoreless seventh and has not allowed a run in 11 straight road appearances. ... Atlanta is 34-6 when outhitting opponents. ... RHP David Carpenter pitched the last two innings for the Braves. ... LHP Tony Sipp pitched the eighth for Arizona. ... The Braves are off on Monday and begin a three-game home series against Miami on Tuesday. Arizona opens a four-game series on Monday at the New York Mets.