Sawyer Kollmorgen had 380 yards passing for the Panthers (0-1), who fell to 1-16 against the rival Hawkeyes. The Panthers finished with a staggering 16 penalties for 128 yards.
Iowa opened the second half with a slim 17-13 lead and in need of a boost on offense.
Tevaun Smith provided it on a pair of spectacular plays - then watched Johnson top him.
Smith took a reverse to the left sideline and cut back across the field, avoiding a slew of charging Panthers for a 35-yard gain. He then caught a Rudock pass in the back of the end zone with one hand to put Iowa ahead 24-13.
The explosive Johnson answered quickly.
He beat Iowa's linebackers for his third huge catch of the day, a 70-yarder that made it 24-20 midway through the third quarter. Northern Iowa nearly took the lead early in the fourth quarter, but a pair of delay of game penalties forced a 38-yard field goal by Michael Schmadeke.
Promising freshman Derrick Willies bailed the Hawkeyes out with a 46-yard reception. Powell then took a screen pass and cut through the middle of the field for the eventual game-winning touchdown.
The Hawkeyes looked great the first time they touched the ball.
The rest of the first half was a bit of a struggle.
Mark Weisman a returned the opening kickoff 50 yards and LeShun Daniels Jr. made it 7-0 on a 13-yard TD run, the first of his career. But Johnson, who torched Iowa State for four TDs in last year's opener, went 53 yards on a short pass to set up a Schmadeke field goal.
The Panthers defense settled in, and Kollmorgen found Kevin Vereen for a 23-yard TD reception and a 10-7 lead.
Iowa responded with a rambling 17-play, 79-yard scoring drive, which was aided by a Northern Iowa holding penalty at the goal line and capped by Weisman's 1-yard touchdown run that made it 14-10.
The Panthers pushed the Hawkeyes until well into the fourth quarter. But Iowa hung on for a win that turned out to be much closer than most thought it would be.
Iowa's backfield rotation finished with 151 yards rushing, and the Hawkeyes held the Panthers to just 25 yards rushing on 25 tries.
Follow Luke Meredith on Twitter: www.twitter.com/LukeMeredithAP