Vandenberg passed for 273 yards, and McNutt caught nine passes for 151 yards.
Marcus Coker rushed for 139 yards on 30 carries for the Hawkeyes (7-4, 4-3 Big Ten), who had lost their three road games by a combined 14 points.
The Hawkeyes outgained the Boilermakers 408 yards to 286 but struggled to put away scrappy Purdue.
The Boilermakers (5-6, 3-4) need to win Saturday at Indiana to become bowl-eligible.
Iowa scored on its first possession with a 26-yard touchdown pass from Vandenberg to McNutt.
Iowa answered when Vandenberg found C.J. Fiedorowicz for a 5-yard touchdown pass to make it 14-7.
Purdue's Carson Wiggs considered a fake punt but decided to kick while running instead. It was blocked by Collin Sleeper, and Iowa recovered at the Purdue 9. The Boilermakers caught a break when Mica'il McCall fumbled on the second play of Iowa's possession, and Purdue's Will Lucas recovered.
After an exchange of punts, Marve stepped in at quarterback for TerBush and led the Boilermakers down the field. But Tanner Miller intercepted Marve at the Iowa 1-yard line.
On the next play, Vandenberg dropped back into his end zone and was pressured by Dwayne Beckford. Vandenberg fumbled as he was going down, and Purdue's Brandon Taylor recovered in the end zone to tie the score at 14.
Iowa took a 21-14 halftime lead on a 2-yard touchdown run by Coker with 31 seconds left in the second quarter. The Hawkeyes outgained the Boilermakers 257 yards to 117 and held the ball for more than 19 minutes in the first half.
Iowa's Mike Meyer kicked a 38-yard field goal, and then Vandenberg connected with McNutt again for a 51-yard touchdown on the first play of the fourth quarter to give Iowa a 31-14 lead.
Ralph Bolden's 11-yard touchdown in the fourth quarter after TerBush returned to the game cut Iowa's lead to 31-21.
Marve re-entered the game on a fourth-and-18 situation and completed a 22-yard pass to Edison. He closed the drive with what looked like a touchdown run, but he fumbled into the pylon for a touchback, and Iowa took over.
Follow Cliff Brunt on Twitter: www.twitter.com/cliffbruntap
Will Grier threw four touchdown passes to four receivers -- all in the first half -- and No. 25 Florida downed third-ranked Mississippi 38-10 on Saturday night.
Leonard Fournette highlighted his SEC-record third straight 200-yard game with a 75-yard touchdown run, and No. 9 LSU overcame Eastern Michigan 44-22 on Saturday night.
An officiating error led to an Oklahoma State touchdown Saturday in the Cowboys' 36-34 win over Kansas State.
Texas A&M receiver Ricky Seals-Jones, who was ejected for targeting midway in the second quarter of Saturday's game, took to Twitter late in the game, retweeting a tweet that questioned the call.
Florida State running back Dalvin Cook exited in the first quarter of the Seminoles' 24-16 win over Wake Forest with a left hamstring injury. He is day-to-day.
As if things weren't going bad enough at Texas, the Longhorns appear to have players on Twitter during lopsided losses and jabs at their coach accidentally being sent from other nearby teams.