Mike Meyer kicked four field goals, including a 42-yarder in the second overtime, and Greg Castillo had a game-ending interception as the visiting Hawkeyes stunned the Spartans.
Iowa's Mark Weisman ran for 116 yards and a touchdown before sitting out the overtime with an apparent leg injury suffered on his game-tying TD run at the end of regulation. The win puts the Hawkeyes (4-2, 2-0 Big Ten) in great position to compete for a Legends Division title.
Michigan State (4-3, 1-2) has the daunting task of climbing out of a hole with road games against rival Michigan and Wisconsin up next.
After the teams traded field goals in the first overtime, Meyer booted a 42-yard field goal and Castillo sealed the win by picking off a tipped pass from Andrew Maxwell.
Le'Veon Bell ran for 140 yards and a touchdown for Michigan State, which led the entire way until Weisman's 5-yard touchdown run with 55 seconds left forced overtime.
GAME NOTEBOOK: Michigan State held Iowa to 65 yards in the first half. ... Iowa's Jordan Cotton returned a kickoff 82 yards for a touchdown in the second quarter, but it was called back due to an illegal block in the back. ... Michigan State missed out on a chance for a 50-plus yard field goal as time wound down at the end of the half. The field goal team ran out with six seconds left, but the Spartans' coaches wanted to spike the ball to stop the clock and time expired amid the confusion.