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
South Carolina AD Ray Tanner is not "100 percent sure" Saturday's game vs. No. 7 LSU will be played at Williams-Brice Stadium because of devastating floods that hit the state.
UCLA junior linebacker Myles Jack has withdrawn from school and will enter the NFL draft, making the decision just weeks after suffering a season-ending knee injury.
The Oklahoma State Cowboys' defense has lost senior middle linebacker Ryan Simmons for the season because of a knee injury.
A judge has dismissed simple assault charges against Rutgers wide receiver Leonte Carroo after the woman he allegedly attacked after a football game said she didn't want to testify.
Colorado coach Mike MacIntyre said he was sorry for getting into a sideline altercation with an assistant coach during a 41-24 loss to Oregon over the weekend.
The Fresno County District Attorney's office has filed charges against Fresno State QB Zack Greenlee and a teammate after both were arrested last month during a house party near the campus.