SAN FRANCISCO (AP) -- The way he was going and getting quick outs, Brandon Webb thought for sure he would finish the game.
Webb pitched another gem and, for the first time, has begun a season by winning his first four starts. Barry Zito on the other hand has lost his opening four starts for the first time.
"That's a good start," Webb said. "It makes you feel confident."
Webb hit an early two-run single and made it stand up. The 2006 NL Cy Young winner gave up three hits over eight innings and won his sixth straight outing since last September.
The sinkerballer struck out the side in the first inning, throwing 10 of his 11 pitches for strikes. He got through both the fifth and sixth innings on only five pitches each time and wound up with five strikeouts.
"With 62 pitches through six innings, I felt I was going to finish this thing, but I kind of got out of sync," Webb said. "A couple really quick innings, I was able to make pitches when they were swinging early."
Brandon Lyon finished for his third save in five chances.
Webb put Arizona ahead with his single in the second. Eric Byrnes had an RBI double in the fifth that extended his hitting streak to 12 games, and Orlando Hudson followed with a run-scoring bloop single as Arizona improved to 11-4.
"We've done a little bit of everything. To not just do it in one fashion makes you feel that on any day you have a chance to win," Diamondbacks manager Bob Melvin said. "It's taken everybody we have offensively to get us to the point we are, including Brandon Webb today."
Zito, the Giants' $126 million left-hander who went a career-worst 11-13 last year, is still searching for consistency. After Webb's two-out, two-run single, he recorded seven straight outs before a leadoff single by Stephen Drew in the fifth.
"It's just a fine line," Zito said. "I feel good about the way I'm throwing and have to stick with that."
Zito worked around Chris Young's leadoff single in the first and then walked the first three batters of the second to load the bases and draw boos. The 2002 AL Cy Young winner with Oakland had only four total walks in his first three starts.
After Chris Snyder struck out, Drew hit a shallow fly ball that kept the runner at third. Webb followed with his first hit of 2008 on a 2-0 pitch. Zito threw 38 of his 105 pitches in the inning.
"It was a big inning for us, no outs, bases loaded," Webb said. "Being up there with two outs, I had to try to do something."
Zito allowed three earned runs, five hits and five walks in six innings -- and he has yet to go more than six innings. Zito's 21 career April defeats are his most of any month and it's still his only losing month.
Zito, named the Giants' Opening Day starter on Day 1 of spring training, lost his first four decisions in 2005 only to bounce back and finish 14-13.
"I know I have good stuff in me and it will serve us eventually," he said. "Stick with my approach, keep going out there with my head up. You can't get down. Baseball is fun, even though it doesn't seem fun sometimes."
San Francisco went 5-5 on its initial homestand of the year.
Giants rookie John Bowker continued his torrid start since being called up Saturday. After becoming the first player in franchise history to homer in his first two major-league games, he tripled Tuesday in his third game and singled Wednesday for his first hit off Webb.
"Webb was good," Giants manager Bruce Bochy said. "He's one of the best in the game and he was on today. ... It's a tough day when Webb is on top of his game. His hit really hurt us, too. Webb did it all today."
Mark Reynolds returned to the Arizona starting lineup at third base after being held out Tuesday as a precaution following a scary fall over the railing and into a photo well Monday.
Webb hasn't lost to the Giants in eight starts since a 3-1 setback on Oct. 2, 2005. ... Bochy celebrated his 53rd birthday. ... Arizona third baseman Chad Tracy, recovering from microfracture surgery on his right knee, could begin a minor-league rehab assignment in the middle of next week. ... The Giants activated right-hander Vinnie Chulk (shoulder strain) from the disabled list and he made his season debut, pitching two hitless innings.