Soto finished 3-for-4 with a pair of two-baggers, while Aramis Ramirez went 3- for-5 and scored a run for the Cubs, winners of 12 of their last 15.
Rodrigo Lopez (4-3) allowed three runs -- two earned -- on five hits over 5 1/3 innings for the win. He walked two and struck out three.
Kerry Wood tossed a perfect ninth to record his first save of the season.
Dempster, a veteran of 510 big-league outings, was 7-8 in 2011 after dropping a 3-2 verdict at Milwaukee on July 26.
He's gone 3-for-3 since, however, allowing 14 hits and six runs in 19 innings while toppling St. Louis, Washington and Cincinnati.
Against the Nationals on Aug. 11, Dempster allowed just three hits and struck out six in seven innings in a 4-3 triumph.
The Cubs are 7-3 in his last 10 starts and he is 6-11 with 16 saves in his career against Houston.
The Astros start hard-throwing righty Brett Myers, who's not won since June 17.
The Jacksonville, Fla. native, who'll turn 31 Wednesday, was 3-6 on the season after defeating the Los Angeles Dodgers, but is 0-6 in 10 starts since, a span in which Houston has gone 2-8.
He tossed 7 2/3 innings of three-run ball in his last start, on Aug. 11 at Arizona, but got a no-decision in Houston's 6-5 loss.
Previously, on Aug. 6, he was saddled with loss No. 12 after allowing 11 hits and six runs in six innings against Milwaukee.
Also a former closer, Myers is 12-3 with one save in 19 career meetings with the Cubs.
The Cubs have won six of 10 over the Astros this year, taking two of three in Houston back in mid-April.