Stokes enjoyed a most unusual reprieve when he was caught-and-bowled for 52 by Alzarri Joseph, who snaffled a sharp chance as the ball cannoned towards his midriff.
After trudging from the oval at the Darren Sammy Stadium in Gros Islet, Stokes was removing his protective equipment when the third umpire declared that Joseph had delivered a no-ball after reviewing the footage.
Number seven Jonny Bairstow, already in the middle, made a quick u-turn and exited as Stokes returned to rousing cheers from the England fans.
Buttler was dropped in the slips before he had scored, and he and Stokes rode their luck at times early but looked more poised as the day progressed, and they dug their team out of a big early hole. Buttler was unbeaten on 67 and Stokes on 62 as England took the upper hand for the first time in the series, which it has already lost after defeats in the first two Tests. But it was not all smooth sailing for the visitor, whose top-order problems were starkly evident again.
Keemo Paul, drafted into the team in place of suspended captain Jason Holder, took a wicket with his first ball when England opener Keaton Jennings edged to first slip. He was out for eight off what was little more than a loosener from Paul.
The 20-year-old, in his third Test, was the pick of the four-pronged West Indies pace attack and beat the batsmen regularly.
After getting Jennings, he also snared the other opener, Rory Burns, for 29 when the opener was trapped lbw.
The on-field umpire adjudged Burns not out, but a West Indies review showed the ball would have hit the middle stump and the decision was overturned.
Brief scores: England (1st innings) 231/4 (J Buttler 67*, B Stokes 62*, K Paul 2/42) vs West Indies