Patrick Williams also had a touchdown catch.
The Cyclones (2-8, 0-6 Big 12) drove the ball down to the 1 with 3 seconds remaining, but Alexander Robinson was stuffed by Daniel Dykes and Jimmy Smith for a loss.
It was the Cyclones' eighth straight defeat.
The Buffaloes (5-5, 2-4) trailed 24-13 after Robinson's 1-yard touchdown run with 9:14 remaining, but Hawkins threw a 14-yard strike to Williams. Colorado converted the 2-point try to make it a 24-21 contest with just over 7 minutes remaining.
Hawkins then hit a wide open Cody Crawford in the back of the end zone for the winning score with 1:30 left.
Robinson finished with 101 yards and two touchdowns for Iowa State. Jason Scales also had a touchdown run, while Austen Arnaud completed 16-of-28 passes for 215 yards. He also rushed for 70 yards.
Hansen struggled to move the Buffaloes offense in the first half, completing just 4-of-12 passes for 48 yards and one interception.
Enter Hawkins, who energized the offense, leading the Buffaloes to two straight scores to start the second half.
He hit a wide open McKnight for a 22-yard score after the Cyclones had a coverage gaffe, giving the Buffaloes a 13-10 lead.
To open the second half, Hawkins guided the Buffaloes on a nine-play drive, culminating with a 4-yard touchdown pass to McKnight on fourth down.
However, the extra point was blocked by Nate Frere, adding to Colorado's kicking woes.
Jameson Davis missed two field goals in the first quarter.
The Buffaloes have misconnected on nine of their last 10 attempts, dating back to Aric Goodman's game-winning field goal in overtime against West Virginia.
Goodman missed seven in a row before being replaced by Davis, who pushed a 38-yard attempt to the left on Colorado's opening drive Saturday. He later sent a 29-yard attempt wide right.
The Cyclones have now given up 400 or more yards of offense in seven straight games, the Buffaloes finishing with 422 yards.
Iowa State led 10-0 at halftime on a 24-yard field goal by Grant Mahoney, and a 1-yard touchdown run from Scales with 55 remaining before halftime.
Darrell Scott made his first start as he took over for fellow freshman Rodney Stewart, who's out for the season after fracturing his fibula when he was brought down by a "horse collar" tackle against Texas A&M last weekend.
Scott couldn't find many openings in the Iowa State defense, rushing for just 18 yards in the first half.
He had more room to run in the second half, finishing with 87 yards on 19 carries.
Scott arrived at Colorado as a highly touted tailback, spurning Texas for Colorado. But a bum ankle has hindered him, along with Stewart, who rushed for 622 yards before his season came to an end.