PHOENIX — Brandon Belt hit a three-run homer in the eighth inning and the San Francisco Giants rallied against Arizona's bullpen for the third straight game, beating the Diamondbacks 9-6 Wednesday night to complete a three-game sweep.
Belt hit a two-run single off Brad Ziegler in the opener and Pablo Sandoval hit a two-run homer off Arizona closer J.J. Putz on Tuesday.
Belt finished off the series of comebacks with his homer off David Hernandez (1-2), giving San Francisco its first road sweep over the Diamondbacks since July 22-25, 2010.
Angel Pagan led off the game with a homer, Hunter Pence added a 460-foot solo shot and George Kontos (2-1) pitched 1 2-3 innings after starter Tim Lincecum struggled. Sergio Romo extended his scoreless streak against Arizona to 27 innings in the ninth for his 11th save.
Chad Pennington homered and matched a career-high with four RBIs for the Diamondbacks.
Arizona had 15 hits after getting 11 the previous two games combined and Brandon McCarthy put the Diamondbacks in position to win with six decent innings.
But Hernandez couldn't hold a 6-4 lead.
He walked Pence and Gregor Blanco in the eighth, then served up an 0-2 pitch that Belt hit out to right, setting off a round of boos from the home fans before the ball even landed. It was Arizona's majors-leading 10th blown save of the season.
McCarthy got his sixth start with Arizona off to a rough start, giving up a homer for the fourth straight game when Pagan hit his second pitch over the wall in right.
The right-hander gave up two more runs in the fifth inning on a run-scoring double by Pagan and Brandon Crawford's RBI triple. Pence hit the first pitch he saw in the sixth to the deepest part of Chase Field, a get-out-of-here quick solo shot to right-center that pulled the Giants with 5-4.
McCarthy still left with the lead after giving up four runs on eight hits with six strikeouts.
Arizona went up 6-4 in the sixth on a run-scoring double by Pennington, but San Francisco rallied, scoring three off Hernandez in the eighth and two more in the ninth off Heath Bell.
Lincecum had his own problems.
Pennington hit his first homer of the season off the right-hander in the second inning, a three-run shot to the pool deck in right-center. A.J. Pollock used his speed to set up another run in the fourth inning, reaching on an infield single, stealing second, then scoring on Eric Chavez's run-scoring double to make it 4-1.
Paul Goldschmidt followed with a bloop single to center in the fifth inning that put Arizona up 5-3.
Lincecum was lifted for a pinch hitter in the sixth after allowing five runs on 10 hits with six strikeouts.
Notes: Lincecum hasn't beaten Arizona since Sept. 29, 2010. ... McCarthy had gone 71 straight batters without a walk before intentionally putting Brandon Belt on in the second inning. ... The Diamondbacks move on for a three-game road series against San Diego, with left-hander Wade Miley starting Thursday. He is 2-0, but has had three straight no-decisions. ... The Giants are off Thursday before starting a three-game home series against the Dodgers. Barry Zito will face Los Angeles left-hander Clayton Kershaw in the opener.