New Zealand took three wickets in the last two overs to leave Zimbabwe struggling in its second innings at 58-3 at stumps Tuesday in the second test.
Set a daunting target of 387 to win at Queens Sports Club, Zimbabwe collapsed from 45-0 on the fourth day - losing both openers Chamu Chibhabha (21) and Tino Mawoyo (35), along with Sikandar Raza for a duck.
Earlier, New Zealand made its second declaration of the match on 166-2 after Zimbabwe had resumed its first innings on 305-6 before being dismissed for 362.
Kiwi captain Kane Williamson was undefeated on 68 while Ross Taylor was 67 not out. The tourists lost openers Tim Latham (13) and Martin Guptill (11).
"There were too many soft dismissals in the first innings and looking back I think there were a couple of soft dismissals again (in the second)," said Zimbabwe's batting coach Lance Klusener.
"We need to grind out sessions tomorrow ... There are guys in the team who are short of runs. Tomorrow is an opportunity for them."
Leading the two-test series 1-0, New Zealand controlled this match from its first-innings score of 582-4 after Latham, Williamson and Taylor all got centuries, but faced some resistance from Zimbabwe on the third day when Craig Ervine scored his first hundred in test cricket.
Ervine resumed on 115 on Tuesday and finished on 146 - including 18 fours - with test debutant Peter Moor out for 71.
Leg-spinner Ish Sodhi was the pick of the New Zealand bowlers with 4-60.
Zimbabwe needs 329 more runs to win on the last day with seven wickets in hand, a tough task for a side that lost the first test by an innings and 117 runs.
"They batted tremendously well in the first innings, they showed resistance," New Zealand bowler Trent Boult said.
"(But) it will be a huge challenge for them to bat on a tiring wicket tomorrow."