Kris Murray and Jordan Bohannon each scored 19 points for Iowa (22-8, 12-7 Big Ten), which has won eight of its last nine games and avenged the only loss in that stretch, a home defeat to Michigan on Feb. 17.
Hunter Dickinson had 21 points and 11 rebounds and Eli Brooks added 17 points for Michigan (16-13, 10-9), which saw its pursuit of an at-large NCAA Tournament bid take a hit.
Iowa jumped on Michigan from the start, taking a 13-4 lead and then going up 26-11 with 10:03 remaining in the half.
Michigan answered with a 9-2 run to cut Iowa's lead to 28-20 with 6:56 left until halftime, but Iowa responded with an 11-1 run to go up 39-21 with 3:30 remaining in the half.
The Hawkeyes ended up taking a 47-30 lead into the locker room. Iowa went 7 of 10 from 3-point range and 18 of 30 from the field in the half.
In the second half, the Hawkeyes continued to make baskets and took a 55-36 lead with 17:31 remaining following a 3-pointer by Bohannon.
Michigan made a surge, cutting Iowa's lead to 71-62 with 5:34 remaining after a 3-pointer by DeVante Jones.
The Wolverines reduced the deficit to 73-66 with 3:00 remaining after a layup by Dickinson, but Kris Murray hit a 3-pointer with 2:29 left to give Iowa a 76-66 lead.
Kris Murray then hit a layup with 50 seconds remaining to give the Hawkeyes a 78-69 advantage.
Iowa all but put the game away with 32 seconds remaining as Bohannon hit two free throws for an 80-69 lead.