Nate Schierholtz's home run off Sergio Romo in the ninth inning accounted for the game's only run, as the Chicago Cubs eked by the San Francisco Giants, 1-0, in the middle installment of a three-game series at AT&T Park.
Schierholtz, who spent the first five-plus seasons of his big-league career in San Francisco, sent a towering fly ball deep to right field that carried into the first row of seats to break a scoreless tie.
Pedro Strop (1-0) worked out of a bases-loaded, no-out jam in the eighth, and Kevin Gregg left the bags full in the ninth to post his 21st save and close out Chicago's third win in four games.
The Giants, losers in six of their last seven games, filled the bases in the eighth without getting the ball out of the infield with a walk and a pair of misplayed bunts. Strop escaped unscathed by striking out Hunter Pence after getting both Buster Posey and Pablo Sandoval to ground into force outs at the plate.
A one-out single and two walks against Gregg gave the Giants hope, but Tony Abreu bounced into a 3-2-3 double play to end the game and send San Francisco into a virtual tie for last place in the NL West.
"It's frustrating," Pence said of the team's struggles. "It's not fun when things don't fall your way."
Romo (3-6) took the loss for the second straight night after serving up Schierholtz's homer and blowing a save in the series opener.
Madison Bumgarner did not factor in the decision despite blanking Chicago over eight innings and limiting the visitors to four hits and two walks while recording seven strikeouts.
Chris Rusin matched his counterpart over seven innings and yielded just three hits and a pair of walks.
"Rusin was phenomenal," Cubs manager Dale Sveum said. "Just a heck of a job."
The Cubs lefty set down the first 13 batters he faced before walking Pence with one out in the fifth. Joaquin Arias recorded San Francisco's first hit with a single two batters later, and Rusin retired Brandon Belt to keep it a scoreless affair.
A pair of two-out singles in the sixth gave Chicago its first and only chance with a runner in scoring position, and Andres Torres snagged Schierholtz's sinking liner with a diving catch in center field to end the frame.
Pence hit a ground-rule double to lead off the seventh inning for the first extra-base hit in the game, but the Giants couldn't capitalize due to a pair of groundouts and Anthony Rizzo's leaping grab of Belt's screaming line drive that looked destined for the right-field corner.
Bumgarner lowered his ERA to 2.76 ... San Francisco's two errors up its season total to an MLB-high 76 ... With only one double Saturday, the Giants extended a streak of two-or-less extra-base hits to 10 straight games ... The Giants went 1-for-10 with runners in scoring position and stranded 10 baserunners.