The Cardinals had a bad first half, looked as if they straightened things out but then stumbled to the finish.
Louisville (4-0) will face No. 13 Missouri in Friday night's semifinals. The Tigers beat Stanford 78-70.
The Cardinals somehow held a 26-20 halftime lead despite shooting 27.0 percent from the field (10 of 37) and committing 10 turnovers.
They held Northern Iowa (3-1) to one field goal over the opening 10:47 of the second half and that cut Louisville's lead 40-24. It was far from an easy ride to the finish as the Cardinals went 5:12 without scoring and suddenly the Panthers were chipping away.
Jake Koch made two free throws with 2:06 to cut Louisville's lead to 45-44.
Gorgui Dieng scored for the Cardinals and after a missed 3 by Northern Iowa Luke Hancock made one of two free throws for Louisville with 54 seconds left.
Koch made two free throws with 42 seconds left to make it 48-46.
Peyton Siva drove the lane and missed a short shot for Louisville but the ball was tied up and the arrow favored the Cardinals with 6.3 seconds left. On the inbounds pass Wayne Blackshear found Smith who laid it in and was fouled with 5.1 seconds left for the final margin.
Marc Sonnen had 11 points for Northern Iowa and Koch finished with 10. Nate Buss was the man who made the difference for the Panthers scoring eight points in the final 13 minutes — his only playing time of the game. The 6-foot-9 sophomore didn't score as a freshman and had a total of 24 points coming in.
Louisville finished shooting 30.6 percent (19 of 62) while the Panthers hit 34.8 percent (16 of 46).
The Cardinals had a 46-28 rebound advantage including 21-5 on the offensive end.