West Indies batsman Marlon Samuels struck a brilliant 123 on Friday but New Zealand's seamers set up a healthy first innings lead of 51 on a gripping second day of the second test at Sabina Park.
West Indies, 11-0 overnight in reply to the Kiwis' first innings total of 260, was bowled out for 209 midway through the final session.
The visitors stretched their overall advantage to 110 by the close, reaching 59-2 in the second innings.
Martin Guptill topscored with 42 while off-spinner Narsingh Deonarine (2-3) revived the hosts with two late scalps.
Earlier, Samuels' fourth test century was decorated with 15 fours and four sixes and spanned 169 balls and 264 minutes.
Captain Darren Sammy was the next best West Indian with 32 off 29 balls.
Doug Bracewell claimed 3-46 while left-arm seamer Trent Boult (3-58) and Neil Wagner (2-24) were also magnificent. The fourth member of the seam quartet, Tim Southee, also supported with 2-70.
New Zealand started the day brightly as Boult prized out Kieran Powell in the fourth over without addition to the total.
Left-hander Powell (10) dangled a tentative defensive stroke and edged straight to Dean Brownlie at third slip.
Assad Fudadin got off the mark with an edge through second slip but didn't get much further, Boult eventually gaining an lbw verdict via the TV umpire after Marais Erasmus has initially ruled not out.
Fudadin (5) played across the line of on that shaped inwards and was plumb in front at 17-2.
Chris Gayle, one of the most destructive batsmen in the modern game, was uncharacteristically becalmed and struggled for fluency.
Southee should have claimed the big Jamaican on 5, but wicket-keeper Kruger van Wyk left a thick edge and Ross Taylor's late lunge low to his right at first slip was unsuccessful.
The chance did not prove costly as Wagner struck in his second over, Gayle fending an ugly back foot stroke to backward point after scoring 8 off 55 balls.
Samuels and veteran Shivnarine Chanderpaul took lunch at 62-3 but the West Indies continued to lose wickets regularly after resumption.
Southee claimed Chanderpaul (9) at 82-4, the left-hander edging a tentative prod low to first slip.
One run later, Boult further dented the hosts with the scalp of Deonarine for a duck, another edge found and wicket-keeper van Wyk this time snapping up a low catch.
Denesh Ramdin helped the West Indies pass three figures, but after scoring 15 off 26 balls, he fended Wagner to gully at 113-6.
Samuels played some majestic strokes as he arrived at his half century off 93 balls with his ninth four.
Sammy dominated a seventh wicket stand of 49 with Samuels, slamming six boundaries before the skipper was lbw to Southee, umpire Paul Reiffel's not out verdict overturned on the Decision Review System.
Samuels tried to rally the tail after tea, but the lower order showed little resistance.
Sunil Narine (1) sparred at Bracewell and edged to second slip where Guptill claimed an easy catch.
Five runs later, there was a similar result as Kemar Roach, roughed up by some short bowling, fended to Guptill in the same position off the same bowler at 183-9.
Samuels, on 98 when Roach departed, brought up his century in thrilling style, lashing Southee high over cover for six with last man Tino Best at the other end.
He added two more sixes off successive balls, both sailing over Southee's head, and another off Bracewell, before he was caught on the deep cover boundary off Bracewell to end the innings.
New Zealand, left an hour and a half to bat, got a fine opening stand from Guptill and B.J. Watling as they took the lead past 100.
But Deonarine removed both in the last 15 minutes to keep the match in the balance.
Watling went first, shuffling too far across his stumps and lbw, while Guptill, after hitting seven fours off 59 balls, departed in identical fashion.
Nightwatchman Neil Wagner (2 not out) and Brendon McCullun survived to the close.