Justin Jackson ran for 171 yards andAustin Carr caught three touchdown passes as Northwestern held on to beat Iowa 38-31 on Saturday.
Trae Williams' interception in the final minute secured the win for the Wildcats (2-3, 1-1 Big Ten), who scored touchdowns on three straight drives in the second half for their first win at Kinnick Stadium since 2009.
The Hawkeyes had scored 17 straight points to take a 24-17 lead in the third quarter before Northwestern's surge and late stops.
"For us to weather that storm and then not to flinch after they went on a 17-0 run, I thought showed some maturity from this group and then to get the finish was critically important," Northwestern coach Pat Fitzgerald said. "We've got to squeeze everything out of this group. I think they're coming along for us."
C.J. Beathard threw for 204 yards and a touchdown for Iowa (3-2, 1-1), which snapped its nine-game regular-season Big Ten winning streak.
Northwestern's Clayton Thorson threw for 164 yards. Carr - his favorite target and the Big Ten's receptions leader - has caught a touchdown pass in four straight games.
Jackson became the fourth player in Northwestern history to reach 3,000 career yards. The junior's 58-yard touchdown run late in the third quarter regained the lead for the Wildcats.
Defensive end Ifeadi Odenigbo had four of Northwestern's six sacks.
The Hawkeyes had two chances to tie the game in the final seven minutes, but were forced to punt and then Williams intercepted Beathard at Northwestern's 36-yard line.
Iowa's mistakes - pass protection and penalties - were costly. The Hawkeyes had 70 penalty yards, including personal fouls on Northwestern's last scoring drive.
"We're not good enough to give up 15 yards, whether it's a sack, a penalty," Iowa coach Kirk Ferentz said. "We're just not good enough, and not many teams are."
Iowa's LeShun Daniels Jr. and Akrum Wadley combined for 107 rushing yards and three touchdowns. Wadley has seven touchdowns in three games against Northwestern.
NORTHWESTERN: The Wildcats entered Saturday as the worst scoring offense in the Big Ten, but exploded for a season-high 38 points in their first road game. Northwestern took advantage of good field position early. It had three scoring drives of 75-plus yards in the second half.
"The offense has been there, but I just think we've had self-inflicted wounds," Fitzgerald said.
IOWA: Beathard didn't have time to find targets in his first game without top receiver Matt VandeBerg, who broke his foot this week in practice. Beathard was sacked six times and had to scramble to throw most of the game.
NORTHWESTERN: The Wildcats have a bye next week before visiting No. 17 Michigan State on Oct. 15.
IOWA: The Hawkeyes travel to Minnesota with hopes of holding onto the "Floyd of Rosedale" trophy. Iowa got whipped 52-14 in its last trip to Minnesota two years ago.