Zito allowed one run over 6 2/3 innings to improve to 3-0 against Arizona this year.
"He locates great," D-backs manager Kirk Gibson said. "He really does. He's got great sequences. He throws the ball at the top of the zone a lot, he drops his curveball in there, he's got a cutter, he's got a slider, changeup. He's thrown the ball very well this year every time we've seen him."
Still, Gibson was not pleased.
"I don't want to give him too much credit, because at the same time I think we should be able to better make adjustments and get more runs off him than that," Gibson said.
The Giants gave Zito some early support when Angel Pagan led off the game with a triple to left-center and Marco Scutaro followed with an RBI grounder to short.
"Just was struggling with location early in the game," D-backs starter Wade Miley said. "Kind of battled through that and made some better pitches later on."
Meanwhile, Zito held the D-backs in check until Justin Upton launched a homer in the fourth to tie the game at 1. The Giants caught a break in the inning, however, as Paul Goldschmidt was caught stealing just before the homer.
It was one of two costly failed stolen-base attempts, with the other coming in the ninth when Miguel Montero led off with a single and pinch-runner Tyler Graham was cut down at second a few pitches later.
"I gave Graham the green light if he was comfortable. That's why we brought him up here," Gibson said. "And he really didn't have a great jump. You've just got to tip your cap. We thought we had a good opportunity in those situations, Goldy's been outstanding in that, they just got us."
With two outs in the fifth, Buster Posey hit a 2-0 pitch from Miley for an opposite-field homer to put the Giants on top, 3-1.
"I made a bad pitch to Posey and he capitalized on it," Miley said. "I threw a fastball over the middle and he's a pretty good hitter and he did what he was supposed to with that pitch. I was trying to throw a sinker down, down off the plate and if I walk him I walk him. I was just trying to get him to chase something off the plate 2-0."
Miley (15-10) allowed three runs on eight hits over seven innings.
"He's got great stuff," Giants manager Bruce Bochy said. "They have some good, young arms there. He's had a great year."
The D-backs chased Zito (12-8) from the game in the seventh.
Montero led off the frame with a walk, but was wiped off when Chris Johnson grounded into a double play. After John McDonald doubled, the Giants brought in Sergio Casilla to face pinch-hitter Chris Young.
Casilla fanned Young to end the threat.
The D-backs capitalized on Aaron Hill's one-out walk in the eighth. Jason Kubel's groundout moved Hill to second, and Goldschmidt singled him home, the first baseman's 70th RBI of the season.
"We had a couple of chances with runners in scoring position, and we've scored four runs in two nights," Gibson said. "They've hit impactful home runs in both the games and we got a solo home run tonight."