Chicago took two out of three in the series, leaving the Astros just two losses away from reaching 100 for the year.
Soriano hit a solo homer in the fifth and he had an RBI single in the seventh to give the Cubs a 3-0 lead.
Travis Wood (6-11) gave up a run on four hits in 7 2/3 innings to win his second straight start.
Dave Sappelt also had three hits for the Cubs, one of them a line drive in the eighth inning that struck the pitching hand of reliever Mickey Storey and then hit Storey on his right cheek.
Storey was able to walk to the dugout under his own power with a bruise clearly evident on the right side of his face.
Houston starter Fernando Abad (0-4) was removed from the game after 3 1/3 innings, having surrendered a run on four hits with three walks.
After making 81 relief appearances over three seasons, Abad has been given four starts late in the year and has lost them all.
Mathematician offers formula for finding the perfect Christmas tree
Twerking Brooklyn burglar 'dropped it like it was hot' prior to theft