Giants 2, Cubs 1: Matt Cain tossed eight-plus strong innings to win his fifth consecutive start as host San Francisco posted its fifth victory in six games.
Aubrey Huff and Joaquin Arias each drove in a run without delivering a hit in the sixth inning for the Giants, who improved to 4-1 on their seven-game homestand.
Cain (6-2) limited the Cubs to one run and five hits before walking Starlin Castro to start the ninth and exiting. The veteran struck out seven in improving to 6-2 lifetime against Chicago.
Javier Lopez induced a double-play grounder from David DeJesus and Sergio Romo retired Alfonso Soriano to notch his fourth career save and first this season.
DeJesus gave the Cubs the lead in the fourth with a two-out solo home run. But Chicago was unable to generate anything else, and San Francisco scratched out two runs in the sixth to move ahead.
Ryan Theriot and Melky Cabrera began the frame with singles and Angel Pagan loaded the bases with a one-out base hit. Huff drew a six-pitch walk from Matt Garza to force in the tying run and Arias bounced into a fielder's choice, scoring Cabrera to put the Giants in front.
Garza (2-4) fell to 0-3 over his last five overall starts despite allowing only two runs and five hits in six innings. The right-hander is 1-4 in six road outings this year.
Tony Campana recorded two of the five hits by the Cubs, who dropped to 0-2 on their 10-game road trip. Chicago has lost nine straight on the road and 14 of 17 overall.
GAME NOTEBOOK: Five of Garza's last six starts have been on the road. ... Giants 3B Pablo Sandoval was scheduled to begin a rehab assignment with Class A San Jose on Saturday. Sandoval, who has not played since May 2 due to a fractured left wrist, could be back with San Francisco on Friday. ... Giants closer Santiago Casilla is day-to-day after leaving Friday's victory with a bruised tibia.