Andrew Susac hit his first major-league home run and Hunter Pence also went deep as visiting San Francisco strengthened its hold on the National League's second wild card.
Jake Peavy (3-12) struck out eight and limited the Cubs to two runs on 10 hits over seven innings to win his second straight start. Travis Ishikawa added three hits and three RBIs for the Giants, who moved 1 1/2 games ahead of Atlanta in the race for the final playoff spot.
Cubs starter Edwin Jackson (6-14) didn't make it out of the third inning, getting tagged for seven runs and eight hits before being chased with two outs in the inning. Chris Valaika hit a two-run homer and Luis Valbuena added a solo shot among three hits for Chicago.
The Giants batted around in a four-run first inning, getting a sacrifice fly from Pablo Sandoval and an RBI single from Joe Panik before Ishikawa's two-run double made it 4-0. Valaika's third big-league homer cut the margin in half in the second, but Ishikawa roped an RBI double an inning later and Susac hit a solo shot to the opposite field later in the frame.
Pence cranked his 17th homer to left field in the fourth to make it 8-2, and it stayed there until Valbuena's 11th of the year landed in the right-field bleachers in the eighth. Panik went 3-for-5 to extend his hitting streak to six games.
GAME NOTEBOOK: The Giants' protest was upheld - the first protest MLB has upheld since 1986 - meaning Tuesday's contest that originally was declared an official game and a 2-0 Chicago win will resume in the bottom of the fifth inning at 5:05 p.m. ET Thursday, ahead of the regularly-scheduled series finale at 8:05 p.m. … Cubs SS Starlin Castro was scratched from the lineup to attend to a family emergency, so Javier Baez took over at short and Valaika started at second. … Giants C Buster Posey sat out with a sore left hip but is expected to be available Thursday.