Caleb Williams passed for a touchdown and ran for another, Jalen Redmond returned a fumble for another score, and No. 12 Oklahoma beat Iowa State 28-21 on Saturday.

Kennedy Brooks ran for 115 yards for the Sooners (10-1, 7-1 Big 12, No. 13 CFP), who bounced back from a loss to Baylor and solidified their chances of reaching the Big 12 title game. They also kept alive their slim College Football Playoff hopes.

Iowa State's Charlie Kolar, playing in his hometown of Norman, Oklahoma, had career highs of 12 catches and 152 yards. Brock Purdy passed for 281 yards and a touchdown for Iowa State (6-5, 4-4), which was eliminated from the Big 12 title race.

CLICK HERE FOR MORE SPORTS COVERAGE ON FOXNEWS.COM

Iowa State got the ball at its 14-yard line, trailing 28-21 with two minutes left in the game. The Cyclones drove to the Oklahoma 21, but Pat Fields intercepted a pass by Purdy with 15 seconds remaining to end the threat.

Iowa State has been a thorn in Oklahoma's side in recent years, beating the Sooners in 2017 and 2020. Oklahoma beat the Cyclones in the Big 12 title game last year.

In the first quarter on Saturday, Iowa State's Joe Scates caught a ball near the goal line and was stripped. It was ruled that he caught the ball and fumbled out of the end zone. It would have been a touchback, but Oklahoma's D.J. Graham was out of bounds when he stripped it, so Iowa State got the ball at the 1 after the 25-yard completion. Breece Hall scored on the next play.

Oklahoma responded quickly. Williams broke loose for a 74-yard touchdown run — the longest play of the season for the Sooners — to tie the game.

Late in the second quarter, Iowa State drove into Oklahoma territory. Oklahoma's Key Lawrence jarred the ball loose from Purdy, and Redmond got the perfect bounce in stride and took it 42 yards for a touchdown. The score gave the Sooners a 14-7 lead with nine seconds left in the first half.

Williams found Mario Williams in the end zone for an 11-yard score to increase Oklahoma's lead 21-7 late in the third.

Purdy went to the locker room in the third quarter, and his replacement, Hunter Dekkers, threw an interception to Oklahoma's Delarrin Turner-Yell on his second pass.

Andrew Mevis ran 29 yards on a fake punt early in the fourth quarter to put the Cyclones in Oklahoma territory. Later in the drive, Dekkers connected with Chase Allen to cut Oklahoma's lead to 21-14.

Purdy returned in the fourth quarter but couldn't rally the Cyclones on his first possession back as they went three-and-out.

Oklahoma responded with a five-play, 68-yard drive — all running plays — that ended with a 7-yard touchdown run by Eric Gray with 5:06 remaining. Brooks ran for 45 yards on three carries on the drive.

Kolar caught a 2-yard touchdown pass from Purdy to cut Oklahoma's lead to 28-21 with 2:57 remaining, setting up the dramatic finish.

THE TAKEAWAY

Iowa State: The Cyclones came maddeningly close to having a special season. All five of their losses are by 10 or fewer points. They've lost three of their past four, all by seven or fewer points.

Oklahoma: The Sooners once again found a way to win a tight game. Despite getting just 96 yards out of their passing game, Oklahoma claimed its sixth win by seven or fewer points this season.

UP NEXT

Iowa State hosts TCU.

Oklahoma visits No. 9 Oklahoma State.