ATLANTA -- Barry Zito earned the win in the box score and the save from his manager.
"He saved us," Giants manager Bruce Bochy said of Zito. "It would have been tough to come in here and get swept."
The Giants improved to 2-5 on their 10-game road trip.
"It's definitely nice to get the team back on the right track," Zito said.
Zito (6-10) walked five but gave up only one run, on Yunel Escobar's second-inning home run.
Zito pitched five scoreless innings after giving up Escobar's homer.
"He made his pitches well," Braves catcher David Ross said. "He didn't allow anybody to get comfortable."
The Braves, who saw a four-game winning streak end, finished a 6-2 homestand. They were denied their first four-game sweep of the Giants in Atlanta.
"I'm not going to harp on any of the bad stuff that happened today," said Atlanta's Chipper Jones, who was 0-for-4. "We played an awesome homestand. We beat some good pitchers."
San Francisco scored four unearned runs in the eighth to break a 1-1 tie.
Gonzalez (3-3), who had ligament-replacement surgery on his left elbow in May 2007, was struck in the arm by Nate Schierholtz's line drive to open the inning.
The ball bounced off Gonzalez's arm toward first base for a single, and Gonzalez left the game after wincing in pain when he was examined by trainer Jeff Porter. The Braves said X-rays were negative. Manager Bobby Cox expects Gonzalez to miss one or two games.
Moylan replaced Gonzalez and gave up Travis Ishikawa's bunt single. Juan Uribe followed with a sacrifice bunt, and Moylan threw late to first as Schierholtz scored for a 2-1 lead. Moylan struck out Matt Downs and pinch-hitter John Bowker before giving up RBI singles to Randy Winn and Fred Lewis.
"We changed to a ground attack in the eighth," Bochy said.
The Giants have had to rely on "ground attacks" as they have not hit a homer in seven straight games, their longest drought of the season.
Escobar's homer tied the game. He has four home runs and 13 RBI in eight games since the All-Star break.
Kawakami gave up four hits and one run in five innings.
Cox was ejected by plate umpire Jeff Kellogg for arguing a called third strike on Escobar in the sixth. As Escobar took a step toward first base, apparently believing the pitch was high for ball four, Giants catcher Bengie Molina threw out Martin Prado as Prado tried to steal second base.
"A little high?" said Cox when asked after the game about the pitch to Escobar. "I've never seen a ball called a strike like that in 50 years."
The ejection was the 146th of Cox's career, extending his major league record. Hall of Fame manager John McGraw is second with 131. It was Cox's third ejection of the season.
The Giants have not been swept in four games by the Braves since June 21-23, 1960, in Milwaukee.
- Schierholtz had three hits.
- The Braves activated 2B Kelly Johnson from the disabled list and optioned IF Brooks Conrad to Triple-A Gwinnett. Johnson had a single in the eighth.
- Giants CF Aaron Rowand (bruised right forearm) missed his third straight start but should be ready to play on Friday, according to Bochy.
- Bochy said SS Edgar Renteria (sore right elbow) also should play Friday at Colorado after missing two games.