Buster Posey had a two-run home run in the fifth to help the San Francisco Giants beat the Arizona Diamondbacks 3-2 on Saturday night.
Barry Zito scattered six hits and one run over 6 2-3 innings for the Giants, who have won four straight and 22 of their past 32. Zito (12-8) walked one and struck out four. Sergio Romo pitched the final 1 1-3 for his 11th save.
Justin Upton hit his 14th home run for the Diamondbacks, who have scored four runs or fewer in 12 straight home games to match a franchise record.
Arizona starter Wade Miley (15-10) allowed three runs on eight hits and a walk over seven innings.
Posey broke a 1-all tie in the fifth with a two-out home run two rows deep into the right-field stands. The All-Star catcher is hitting .390 in 55 games since the All-Star break with 12 homers and 49 RBIs.