Sappelt supplied a run-scoring double in the first inning and scored on a wild pitch by Fernando Rodriguez (1-10) in the sixth for the go-ahead run.
The September call-up then drove in two more with another two-bagger in the seventh for the Cubs.
Volstad (3-10), who hadn't earned a victory in more than a year until Aug. 26, improved to 3-1 in his fourth start since then, limiting the Astros to one run over five innings.
The right-hander overcame five walks, allowed four hits and struck out four.
Four Chicago relievers blanked Houston over three innings and Carlos Marmol picked up his 19th save.
Jason Castro supplied Houston's only RBI.