Iowa (9-6, 1-0) has won 10 straight conference games at home and 26 of its last 27 overall at Carver-Hawkeye Arena.
Drew Neitzel hit a pair of free throws to bring Michigan State (13-3, 0-1) within 57-55 with 40 seconds left. The Spartans (No. 24 ESPN/USA Today, unranked AP) put Mike Henderson on the free throw line, where he knocked in a pair to push Iowa's lead back to four.
Goran Suton scored with 29.6 seconds left to make it 59-57. Henderson missed the front end of a one-and-one, giving the Spartans a chance to tie with a 3. But Neitzel's 3-point try shot bounced off the rim and Iowa grabbed the rebound.
Henderson's free throws with six seconds left sealed the win for the Hawkeyes, though Neitzel hit a long 3-pointer as time expired.
Neitzel scored 20 to lead Michigan State, which saw its seven-game winning streak snapped.
Neitzel was cold for the first 30 minutes, but he found his rhythm in time to help bring the Spartans back from a double-digit deficit. Neitzel nailed a 3-pointer, a layup and three free throws to spark a 15-6 run that cut Iowa's lead to 52-48.
Haluska pushed the Hawkeyes' lead back to 57-50 with a 3 and a pair of free throws.
Michigan State failed to match the Hawkeyes' intensity early on, and Iowa put the Spartans in a 13-point hole. Tony Freeman followed a 3-pointer with a steal and dish to Haluska, whose breakaway dunk brought a small and relatively quiet crowd to life.
The Spartans answered with a 12-3 run to get within 32-28 by halftime.
Iowa, which had scored most of its early points from the perimeter, went inside to grab a 46-33 lead. Kurt Looby, J.R. Angle and Haluska all scored baskets from the interior to help the Hawkeyes match their largest lead, 13, midway through the second half.
Michigan State's 57 points marked its second-lowest total for the season. Iowa held the Spartans to a season-low 48 in their last meeting, beating them by five in the 2006 Big Ten tournament semifinals.