Bill Doran, with four hits and scored two runs as Houston totaled 13 hits in Cincinnati.
Vern Ruhle (5-3) relieved Nolan Ryan in the fifth inning and retired nine consecutive batters before giving up Cesar Cedeno's solo homer in the eighth inning that cut Houston's lead to one run.
Ryan struck out three batters to give him 3,622 for his career, 15 behind Philadelphia's Steve Carlton in the all-time strikeout race.
"I had an upset stomach," Ryan said. "It was something I ate at lunch."
Ryan concurred with the decision to bring in Ruhle, although Manager Bob Lillis said the hard-throwing right-hander didn't ask to be relieved.
"He didn't want to come out. We just had to go in and get him," Lillis said.
Doran singled in the first inning and later scored on Phil Garner's double play grounder. The Astros made it 3-0 off Frank Pastore (6-11) in the second on singles by Ray Knight, Jerry Mumphrey, Doran, Terry Puhl and Dickie Thon.
Ron Oester hit a two-run homer for the Reds in the second, then Houston scored three runs in the fourth without a ball leaving the infield.