Soriano drove his 20th homer of the season into the center field seats at Wrigley Field with Anthony Rizzo on base and broke a 3-3 tie.
The win snapped Chicago's eight-game losing streak on a rainy Thursday night that included a delay of 1 hour, 22 minutes.
Sean Marshall (4-4) was hung with the loss after he walked Rizzo. Marshall was lifted for Logan Ondrusek, who serve up Soriano's home run.
Zack Cozart and Todd Frazier homered for the Reds, who have lost five in a row but still lead the National League Central.