Zito (5-2) notched his fourth win in five starts, dominating the Cubs on four hits while walking two and striking out five.
The left-hander threw 61 strikes in his 96-pitch performance as the Giants won for the fifth time in their seven-game homestand, which concludes Monday with a fourth contest against Chicago.
Sergio Romo logged his second save after retiring the final two Cubs batters.
Joaquin Arias and Melky Cabrera drove in runs for the second-place Giants, who pulled to within three games of Los Angeles in the National League West with the triumph.
Chicago's Travis Wood (0-2) was saddled with the loss, yielding only one run on three hits over seven full frames.