The Wildcats (7-2, 3-2 Big Ten) have been struggling with their passing game, but had success running the ball. Colter rushed for 166 yards and Venric Mark ran for 162 yards. Mark became Northwestern's first 1,000-yard rusher since Tyrell Sutton in 2006.
Northwestern has won four of its last five against the Hawkeyes (4-4, 2-2), who fell further out of contention in the Big Ten Legends Division. Iowa was hurt by sacks, penalties and lack of execution on offense.
Iowa cut the lead to 28-17 with 6:37 remaining on quarterback James Vandenberg's 1-yard run to cap an 84-yard drive after the Hawkeyes recovered a fumble.
Iowa drove to the Northwestern 24 with 1:44 left, but Vandenberg threw an incomplete pass on fourth-and-2 to end the threat. Vandenberg went 24 for 38 for 214 yards and ran for two touchdowns.
Northwestern has struggled in the fourth quarter, collapsing in losses to Nebraska and Penn State.
Both teams were looking to bounce back from crushing home losses. Northwestern blew a 12-point lead in the fourth quarter against Nebraska, and Iowa was routed 38-14 by Penn State last week.
Northwestern jumped on Iowa early. The Wildcats scored on their opening drive on a 5-yard run by Colter for a 7-0 lead in the homecoming game. He carried the ball five times for 43 yards, including runs of 18 and 20 yards, during the drive.
Iowa answered with a 40-yard field goal. The Hawkeyes reached the NU 28, but Vandenberg fumbled a snap for a loss of 6 yards for third-and-14, and Iowa had to settle for the field goal.
Two plays later, Northwestern turned the ball over, but Iowa was unable to take advantage. The Hawkeyes' B.J. Lowery intercepted Colter's long pass attempt, and Iowa drove to the NU 33, but the Hawkeyes committed a delay-of-game penalty on fourth-and-3 and had to punt.
Northwestern marched 99 yards on its next drive, with Mark running for 72 yards on the first play. Colter later scored on a 2-yard run for a 14-3 lead.
Iowa reached the Northwestern 23 before halftime, but Vandenberg was sacked for a loss of 6 yards on third down. He threw short on fourth down, turning the ball over to Northwestern, which led 14-3 at halftime.
The Wildcats grabbed a 21-3 lead shortly after halftime. Northwestern started at the Iowa 4 after Tyris Jones blocked a Hawkeyes punt and Colter scored his third touchdown on a 4-yard rush.
Northwestern took control on Colter's 47-yard touchdown pass to Christian Jones with 10:43 left in the third quarter.
Iowa scored its first touchdown on Vandenberg's run with 22 seconds left in the third quarter to make it 28-10.