PHOENIX -- Bengie Molina homered and drove in three runs, Brian Wilson struck out the side for his seventh straight save, and the San Francisco Giants defeated the error-prone Arizona Diamondbacks 6-4 on Wednesday night.
Molina hit a two-run homer in a four-run third inning as the Giants took a 5-1 lead against Doug Davis (3-7). Molina added an RBI single in the ninth.
Wilson struck out the top of the Diamondbacks' order -- Felipe Lopez, Ryan Roberts and Justin Upton -- to record his 16th save in 19 chances and lock up the victory for Barry Zito (3-6), who went five shaky innings.
It was another abysmal fielding effort by the Diamondbacks, who followed up Tuesday night's three-error game with three more errors. Two of the blunders were costly.
In the first, Davis threw a pickoff attempt past first base, allowing Aaron Rowand to take second. Rowand moved to third on a wild pitch and scored on Edgar Renteria's sacrifice fly.
Molina gave the Giants a 3-1 lead in the third with a two-run home run into the pool area in right-center field, his team-leading ninth homer and his first since May 12.
Then center fielder Chris Young was charged with an error after making a long run to chase down Andres Torres' drive to deep center field. Two runs scored on the play, giving San Francisco a 5-1 lead.
But Zito, who is working on a $126-million, seven-year contract, gave most of the lead back in the fifth on five straight hits, including an RBI single by Upton and a two-run double by Stephen Drew.
Zito gave up four runs and seven hits, walking four and striking out six.
Davis went four innings, his shortest outing. He gave up five runs and six hits, walking three and striking out one.