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