ATLANTA -- Chipper Jones and Jason Heyward homered and the Atlanta Braves withstood Arizona's comeback attempt to beat the Diamondbacks 6-4 on Wednesday night.
Jones' two-run homer off Trevor Cahill in the sixth inning was his first since May 4.
Tommy Hanson (9-4) gave up three runs and seven hits in 6 1/3 innings.
Craig Kimbrel struck out the side in the ninth to earn his NL-leading 22nd save.
The Braves led 6-0 before Ryan Roberts' three-run homer in the seventh knocked Hanson out of the game. Chris Young added a pinch-hit homer off Jonny Venters later in the inning to cut Atlanta's lead to two runs.
Arizona shortstop Stephen Drew was 1-for-4 as he came off the disabled list to make his first start since July 20, 2011. He missed most of the second half of 2011 and the first 73 games this season while recovering from a fractured right ankle that required surgery.
The Braves have started a 10-game homestand, their longest of the season, with two wins over the Diamondbacks.
Heyward, hitting second for the second straight night, gave the Braves a 1-0 lead with his first-inning homer. He hit a belt-high pitch from Cahill deep into the seats in center for his 12th homer. It was Heyward's fourth homer during his career-best 12-game hitting streak.
Cahill (6-6) then gave up a double to Martin Prado before recording 11 straight outs.
Cahill's throwing error and three walks led to two unearned runs in the Braves' three-run fifth. Jones walked and moved to second on Freddie Freeman's single to right. Cahill fielded Andrelton Simmons' grounder and threw low to second base for an error, allowing Jones to score.
Freeman and Simmons scored on fly balls by Michael Bourn and Prado.
Cahill was pulled after walking Dan Uggla and giving up Jones' homer to center in the sixth. It was Jones' sixth homer of the season and 460th of his career.
Cahill, who had been 4-0 in June, gave up six runs - four earned - four hits and four walks in five-plus innings.
Drew led off the fourth with a single for the first hit off Hanson. He moved to second on Heyward's fielding error in right and advanced to third on Justin Upton's groundout.
Drew was stranded on third, starting a string of Arizona leaving a runner on third base in three straight innings. Aaron Hill doubled in the fifth and was left on third. Upton doubled with two outs in the sixth and moved to third on Hanson's wild pitch but the inning ended on Jason Kubel's strikeout.
Hanson faded quickly in the seventh, giving up consecutive singles to Miguel Montero and Hill before Roberts' homer cut the lead to 6-3.
Arizona had runners on first and second in the eighth when Montero hit into a double play to end the threat against Eric O'Flaherty.
-- NOTES: The Diamondbacks placed RHP Daniel Hudson on the 15-day DL after an MRI on his right elbow showed a tear in the ulnar collateral ligament. Manager Kirk Gibson said Hudson, who left Tuesday night's game with the injury, could seek a second opinion. ... LHP Patrick Corbin was recalled from Triple-A Reno to pitch in long relief. RHP Jonathan Albaladejo was optioned to Reno. ... RHP Josh Collmenter will take Hudson's spot in the rotation on Sunday at Milwaukee. ... Arizona RHP Trevor Bauer, the No. 3 pick in last year's amateur draft, will be called up to make his debut against the Braves in Thursday night's final game of the series. Bauer will face RHP Jair Jurrjens, who won at Boston on Friday in his return from the minors.