Cozart's home run gave the Reds an early lead before consecutive homers by Fernando Martinezand Matt Dominiguez tied it at 2-all in the fourth inning.
Chris Heiseysingled in a run in the fifth to put the Reds on top and Bruce connected for his 28th home run later in the inning to cushion the lead.
It's the fourth straight win for the NL-Central-leading Reds. The loss wraps up a dismal August for the last-place Astros, who have dropped six straight and went 5-22 in this month.
Reds starter Mike Leake (7-8) allowed seven hits and struck out six in six innings.