Alen Hanson homered and drove in four runs, Gorkys Hernandez had four hits and Brandon Crawford had three hits and two RBIs for the Giants. San Francisco has won three straight and 10 of 13, and has scored at least nine runs in each of its three straight wins.
Ty Blach (3-3) gave up only one earned run in 7 2/3 innings for San Francisco.
Hanson's second-inning double to center field drove in Brandon Belt and Crawford. Hanson pulled a pitch down the right-field line for a two-run homer in the third.
Atlanta's starting pitchers have been hammered early in each of the first two games of the weekend series. McCarthy gave up eight runs and 12 hits in only 3 1/3 innings after Mike Foltynewicz allowed six second-inning runs in the Giants' 9-4 win on Friday night.
The Giants scored four runs on six hits off McCarthy (4-1) in the third, including a run-scoring single by Belt. Evan Longoria following with a bloop double in front of diving Nick Markakis for his 1,500th career hit, driving in Posey.
Jose Bautista, whose contract was selected from Triple-A Gwinnett on Friday to become Atlanta's starting third baseman, led off the fourth with a single for his only hit.
Markakis had three hits, including a run-scoring double in the third, to extend his hitting streak to 12 games. He improved his NL-leading batting average to .346.
Attendance was 38,242 one night after the home debut of Braves rookie Ronald Acuna Jr. drew a SunTrust Park record total of 41,807. Acuna was 0 for 4 for the second straight game.
Giants: OF Mac Williamson was eligible to be reinstated from the seven-day concussion DL but that plan was put on hold for at least one day. Williamson, also recovering from a virus, was to be checked by a doctor after taking batting practice. ... RHP Reyes Moronta threw eight straight balls to open the ninth before he was removed following a visit on the mound from a trainer and manager Bruce Bochy.
Braves: LHP Max Fried was optioned to Triple-A Gwinnett after pitching on back-to-back days for the first time in his career. Fried would need to rest for a few days, so RHP Lucas Sims was recalled to provide a fresh arm in the bullpen. Sims allowed two runs in 3 2/3 innings after relieving McCarthy. ... RHP Jose Ramirez (right shoulder inflammation), who has been on the 10-day DL since April 18, started throwing on Friday.
Giants: LHP Andrew Suarez (0-1, 4.38) is scheduled to make his third career major league start on Sunday. Suarez was recalled from Triple-A Sacramento for the second time this season on Tuesday.
Braves: RHP Mike Soroka (1-0, 1.50) will make his second start for Atlanta after allowing only one run in six innings in a 3-2 win over the Mets on Tuesday.