Zito (3-0) was brilliant, allowing only three hits while striking out 10 and walking three. The game marked the first time Zito has won three straight decisions to start a season.
Brian Wilson pitched a scoreless ninth to notch his fourth save.
Zito and the Cardinals' Adam Wainwright (3-1) took a scoreless tie into the bottom of the eighth when the Giants broke through. Nate Schierholtz led off with a double and Torres came on to pinch hit for Zito, smacking a single to center for the game's first run.
Torres got to third on a sacrifice and a single by Pablo Sandoval, then scored on a sacrifice fly by Aubrey Huff to make it 2-0 Giants.
Wainwright pitched well in the Cardinals' loss, allowing two runs on seven hits.