The visitors looked to be in the driving seat when they reached 121-1, but frittered away the advantage, losing nine wickets for 102 and finishing their innings 234 all out.
The Black Caps had reached 86-0 at stumps, with Jeet Raval (51no) and Tom Latham (35no) starting strongly in the opening 28 overs.
Iqbal reached his ton off 100 balls – which included 18 fours – just after lunch but was dismissed for 126 by Colin De Grandhomme after his shot was taken at gully by Kane Williamson.
Neil Wagner claimed an impressive 5-47, removing Mohammad Mithun for eight and Mominul Haque for 12, with Liton Das (29) his fifth scalp as Bangladesh crumbled.
Tim Southee claimed three wickets, dismissing Soumya Sarkar, Abu Jayed and Khaled Ahmed all cheaply.