Soriano, who drove in a run with a single in the first inning, hit a two-run home run in Chicago's four-run third inning. Rizzo put the Cubs up 6-1 in the fifth inning with his 10th home run of the season.
Chris Volstad (2-9) benefited from the offense and collected the win. He went 5 2/3 innings, giving up five hits and two runs with three walks and two strikeouts.
Carlos Marmol had two strikeouts in a 1-2-3 ninth that was worth his 17th save.
San Francisco starter Madison Bumgarner (14-9) lasted four innings, giving up five runs (four earned) on six hits and two walks. He struck out three.
Rizzo started a rally with two outs in the third with a base hit that Soriano followed with his 24th home run this season. Starlin Castro singled and scored on Wellington Castillo's double but the ball got away from Giants catcher Buster Posey and Castillo was able to reach home and make the score 5-0.
Posey doubled in a run for San Francisco in the fourth but Rizzo connected for his home run an inning later. The Giants added two eighth-inning runs on Posey's single and a groundout by Hunter Pence.