The opener batted almost the whole day for 97 before holing out to become spinner Sunil Narine's third wicket. He was visibly distraught as he trudged off the field to be replaced by Kane Williamson
Debutant Neil Wagner, having already been deployed as nightwatchman, was four not out at the close, with Williamson on two.
The Black Caps had a point to prove after their hosts won the preceding one-day series 4-1 as well as both Twenty20 games before that. Daniel Flynn and Guptill settled in for a morning of steady accumulation at the Sir Vivian Richards Stadium after Kiwi captain Ross Taylor won the toss.
Flynn survived appeals for leg before and caught behind on his way to bringing up the 50 stand in the 18th over. Guptill hit Narine for six and the Windies then lost a review when Guptill was given not out lbw to Sammy, having inside-edged the ball.
Three maidens saw in the lunch interval and Flynn took a boundary off Narine after the restart but then became Narine's first Test scalp with the total on 97. Five short of a half-century after his seventh four, the left-hander miscued a cut to Kieran Powell at point.
Roach was unlucky when a bouncer had McCullum in trouble but looped off the bat handle for four, and the same batsman survived an lbw review as replays showed Roach had also overstepped - which at least meant the review was not lost. McCullum fell later in the over though, driving to Narsingh Deonarine at mid-off for 25.
Guptill struck Narine for successive boundaries at the end of a 17-over spell from the spinner and Taylor narrowly avoided being stumped in the last over before tea.
The pair pressed on in the evening, though Guptill was narrowly spared when Rampaul spent his side's second review on an lbw decision and replays returned an 'umpire's call' verdict on the point of impact. The 50 stand came up as Taylor took 10 runs off three Narine deliveries and Guptill moved into the 90s with a boundary off Assad Fudadin.
But Taylor fell for 45 when he was bowled by Narine via his glove and Guptill, having made 97 from 249 balls, inexplicably threw all his hard work away when he tried to reach his hundred with a six and instead skied a catch to Deonarine.