Monte Morris had 19 points for the Cyclones (21-8, 11-6 Big 12), who maintained their shot at a share of the conference title following one of the wilder league games in years.
Oklahoma raced to a 19-point halftime lead. But Iowa State score 22 straight points in just over 5 minutes and outscored the Sooners 59-33 in the second half.
Buddy Hield had 26 points for the Sooners (20-9, 11-6), who shot just 32 percent in the second half in losing for just the second time in 10 games.
Oklahoma had survived scares in its last three games, needing overtime to beat Texas Tech and rallying past Texas and TCU for narrow wins.
The Sooners looked as though they had the Cyclones buried by halftime.
Oklahoma dominated the offensive glass, forced Iowa State to turn it over 10 times in 15 minutes and jumped ahead 37-18. It was a stunning score considering that the Cyclones had won 21 straight home games before last week's loss to Baylor.
But Isaiah Cousins was given a technical foul following a block by teammate Ryan Spangler with Oklahoma ahead 48-28 -- and that seemed to spark the Cyclones.
Their furious run was capped by a 3-pointer from Dustin Hogue that put Iowa State ahead 50-48 with 9:33 left.
The Cyclones kept pushing, and Niang's 3 gave them a 59-52 lead with 6:43 left.
Jameel McKay had 14 points and 12 rebounds for Iowa State, including 10 in the first half to keep the Cyclones within relative striking distance.
Morris, like Niang, took over in the second half scoring all but two of his points.
Iowa State: The Cyclones have won at least 11 Big 12 games in each of the past four seasons. ... Long and McKay staged an impromptu 3-point shooting contest from behind the courtside seats. Long ended it with a swish.
Oklahoma: Cousins had 12 points. ... The Sooners more than doubled up Iowa State by halftime despite shooting just 38 percent. That's because Oklahoma, helped by a 6-1 edge on the offensive glass, had 10 more shots than the Cyclones.
Iowa State plays at TCU on Saturday.
The Sooners host No. 9 Kansas on Saturday.