With the Diamondbacks trailing 3-1 with one out in the fifth, Jason Kubel pinch-hit for Kennedy and walked. Gerardo Parra reached on an infield hit and Didi Gregorius followed with an RBI single.
Hudson struck out Goldschmidt looking and had two strikes on Chavez before his one-time Oakland Athletics teammate doubled to left, scoring Parra and Gregorius to make it 4-3.
"He was throwing me a lot of sliders today," Chavez said. "I'm not really sure why. I don't know if they picked up something on film. He told me that was a really good at-bat and I told him I was (mad) because he broke two of my bats. It was just good old fun. I love Huddy like a brother."
Hudson agreed he may have gone to the cutter one time too many.
"I thought I made some good pitches to Chavez, especially the last one," Hudson said. "But he stayed with it and hit it the other way. I felt like I really had him where I wanted him. Looking back, we might have gone back to that cutter a little too much in that at-bat."
Cody Ross added an RBI single to cap the fifth as the Diamondbacks won the final two games of the series after a 10-1 loss in the opener.
Ian Kennedy (2-3) yielded three runs and five hits in five innings. He struck out seven and walked three for his first win since Opening Day.
"It's been awhile since it was a win," Kennedy said. "I'll take any one. After a while, it does get frustrating. I want to get my innings up but I didn't have my best stuff."
Heath Bell pitched the ninth for his sixth save in eight chances.
The Diamondbacks finally responded with runners in scoring position. After going 5 for 56 of its past eight games, Arizona was 5 for 8 with runners in scoring position.
"We hope it gets much better," said Arizona manager Kirk Gibson. "I saw better approaches as well."
Hudson (4-3) had been 7-0 in nine career starts against Arizona before he got tagged. He allowed five runs and eight hits in five innings -- he's given up 11 runs over 8 2/3 innings in his last two starts.
After cruising through the first two innings, Kennedy was undone partially by a botched defensive play in the third.
Schafer reached on a two-out infield single and Simmons followed with a line drive toward third base. Chavez jumped, but the ball bounced off the palm of his glove and fell to the ground as Simmons sprinted to the bag for an infield single.
Kennedy then walked Justin Upton on five pitches to load the bases, then walked Freeman on four pitches to score Schafer for a 1-0 lead.
Freeman hit a two-run double in the fifth that put Atlanta ahead 3-1.
"For losing two of three, you feel like we won a couple of those games the way we hit the ball," said Braves manager Fredi Gonzalez. "It's just the way it goes sometimes. I don't know how many times I felt like the ball was going to go through the infield and it was a line drive at somebody."
Arizona took a 1-0 lead in the first when Goldschmidt doubled and Chavez singled.
Chavez has hit safely in six of his past seven games and is 9 for 18 in that stretch. ... Upton went 1 for 3 with a pair of walks to finish his first series back at Chase Field 5 for 10 with a home run. ... Goldschmidt's 11 doubles make him the first NL player with at least 10 doubles and 10 home runs. ... Freeman has 14 RBIs in 21 games since coming off the disabled list on April 22. ... Both teams have off days on Thursday. ... Diamondbacks RHP Trevor Cahill (2-4) will get the start Friday at Marlins Park against Kevin Slowey (1-3) and Miami. Braves LHP Paul Maholm (4-4) faces Hyun-Jin Ryu (4-2) and the Dodgers at Turner Field on Friday. Cahill was allowed two runs or fewer in four straight starts.
Copyright by STATS LLC and The Associated Press
PHOENIX, AZ - MAY 15: Starting pitcher Tim Hudson #15 of the Atlanta Braves pitches against the Arizona...