McCoy threw for 244 yards for the Longhorns, (3-2, 2-0), who will head into next week's game against Oklahoma with at least a share of first place in the Big 12. Iowa State (1-3), penalized 10 times for 118 yards, will try to regroup facing road games with Texas Tech and Baylor.
"Not everything went right," McCoy said. "We made mistakes, plenty of mistakes. But at the end of the night we battled, we fought and we came through and got a score at the end."
In a crucial game for both programs, momentum swung back and forth with every drive.
Iowa State's energy was seemingly squashed when McCoy found John Harris for a 44-yard touchdown strike to end the first half. McCoy heaved the ball toward the zone and Harris, surrounded by three defenders, leaped to make the grab.
"That was a killer for them," Texas coach Mack Brown said.
But the Cyclones revitalized a near-sellout crowd with the longest pass play in school history.
Richardson found Quenton Bundrage on a simple slant, and Bundrage outran the Texas secondary for a 97-yard score that gave Iowa State a 20-17 lead. Richardson finished 16 of 26 passing for 262 yards and added 83 yards rushing for a career-best 345 total yards.
Texas answered the big play with a 6-yard TD run by Joe Bergeron — which was set up by a pair of pass-interference calls that Iowa State fans also weren't happy about.
On the touchdown, Mike Davis lunged at the knees of Iowa State's Deon Broomfield, drawing a personal foul that could end up being much more than that once the Big 12 reviews the tape.
Aaron Wimberly, who rushed for 117 yards, gave the lead back to the Cyclones after a fumble with 11:32 left. Cole Netten's 29-yard field goal made it 30-24 with 3:40 to go.
It wasn't enough though, as the Longhorns embarked on the winning drive that might end up saving their season.