The tourists lead by 110 runs with eight second innings wickets remaining but a good day was spoilt by their opening batsmen departing late in the final session.
However, after being dismissed for 260 on the first day, skipper Ross Taylor will be delighted by the character shown by his team, in particular the performances of his opening bowlers.
Trent Boult and Doug Bracewell picked up three wickets apiece in a good all-round display from the Kiwis in the field.
Samuels, whose century was his first in the Caribbean and came on home soil for him at Sabina Park, hit 15 fours and four sixes including one to bring up his ton.
He was the last man out for 123 after holing out to Neil Wagner off Bracewell.
The Jamaican had little support from his team mates with no other batsman making a half-century. West Indies skipper Darren Sammy was the second top scorer with 32.
Boult made the two early breakthroughs with the wickets of Kieran Powell (10) and Assad Fudadin (5).
West Indies were in trouble at 53 for three after Chris Gayle, who had been dropped twice, was removed by Wagner, caught by BJ Watling, having made just eight from 55 balls.
Tim Southee then grabbed the crucial wicket of Shivnarine Chanderpaul (9) who edged a low catch to Taylor.
When Narsingh Deonarine, the last of the specialist batsmen, was caught behind off Boult, West Indies found themselves on 83 for five.
Denesh Ramdin made 15 before skipper Sammy and Samuels put on a 49-run partnership that at least gave the hosts the chance to scrape past 200.
New Zealand started their reply well but the Test took another turn with spinner Deonarine given two overs near the end and making the most of them to get rid off the in-form Martin Guptill (42) and Watling with both batsmen trapped leg before.
While those wickets will hearten Sammy's team, New Zealand's lead heading into the third day remains a promising position for a team who, after a poor tour, are trying to level the two-Test series at 1-1.