Houston (4-1), coming off a loss to Texas-El Paso that knocked the Cougars from their first Top 25 ranking in 18 years, overcame a slow start.
The Bulldogs (2-4) intercepted Keenum twice - one that Charles Mitchell returned 71 yards for a touchdown - and sacked him once.
Still, Keenum completed 39 of 52 attempts for 434 yards.
The Cougars had 553 yards in total offense but were tied 17-17 going into the fourth quarter.
Keenum capped a 78-yard drive with a 3-yard scoring pass to Cleveland to put Houston ahead 24-17.
The Bulldogs came right back and appeared to tie the score when Anthony Dixon leapt into the end zone with 4:57 left. But a holding penalty nullified the TD and a fumble by Tyson Lee gave the ball back to Houston.
Less than a minute later, Keenum found Carrier from 18 yards out and the Cougars were up 31-17.
Dixon had 134 yards and two touchdowns on 21 carries. He had a 50-yard TD run in the second quarter, much of it draped with Houston defenders, to put Mississippi State up 14-7.