Gardner, making his third start in place of injured quarterback Denard Robinson, completed 18-of-23 passes for 314 yards and carried the ball nine times for 37 yards.
Robinson's dinged right elbow was well enough Saturday for him to put in some time at running back. He carried 13 times and led Michigan (8-3, 6-1 Big Ten) in rushing with 98 yards.
The Wolverines defense limited Iowa (4-7, 2-5) to 10 points in the first half and held the Hawkeyes scoreless in the second half until James Vandenberg threw a 13-yard TD pass to Mark Weisman with 2:12 left in the game.
Vandenberg finished 19-of-26 for 181 and two touchdowns.
The win put the Wolverines a half-game ahead of Nebraska in the Big Two Legends Division. The loss rendered Iowa ineligible for the post-season for the first time in 11 years.