The Buffs won with a strong performance from its defense, which produced eight sacks and held the Cyclones to minus-6 yards rushing.
Quarterback Cody Hawkins produced one of his best games, throwing three touchdown passes and Rodney Stewart ran 36 times for 123 yards, becoming the first 1,000-yard rusher in a season in Boulder since 2004.
Freshman wide receiver Paul Richardson led the Buffs in receiving with five catches for 121 yards as CU kept its bowl hopes alive.
The Buffs are 4-6 overall and 1-5 in Big 12 play with a home game next week against Kansas State and a trip to Nebraska remaining in the regular season. They must win both of those games to become bowl eligible.
Iowa State starting quarterback Austen Arnaud suffered a season-ending knee injury as he tried to lead his team to a fourth-quarter rally. Jerome Tiller replaced him and finished the game under center.
"Athletics are about execution," IOwa State coach Paul Rhoads said. "We go out executed today. Our hat's off to the Colorado Buffaloes and Brian Cabral for having his football team ready to play and executing better than our football team."