The Cardinals had their lead for the second National League wild card berth reduced to 3 1/2 games over both Milwaukee and the Los Angeles Dodgers.
Norris (6-13) had not won a game since May 21. He had gone 0-12 in 18 starts since then, but gave up only two hits to the Cardinals and struck out seven over 7 1/3 innings.
Wilton Lopez came on with two on and one out in the eighth and recorded the final five outs of the game for his eighth save.
Both Houston runs came in the fourth on a solo homer by Jose Altuve and an RBI single by Brett Wallace.
Chris Carpenter (0-1) gave up the two runs on four hits over six innings to take the loss. It came in only his second start of the season, most of which he has had to miss due to a shoulder injury.
Houston had dropped three in a row to run its total to 105 losses for the season.
Reindeer recovered after escaping from Santa during lighting ceremony
'SNL': 'Anchorman 2' cast, One Direction sing 'Afternoon Delight' [VIDEO]