James Anderson, who had made the initial double strike before lunch, was unable to add to his tally in the second session, with the Lancashire swing king still a tantalising one away from becoming the first England bowler to take 500 Test wickets.
But all-rounder Stokes kept England on top, taking three for 22 in an unchanged 13-over spell spanning nearly two hours.
West Indies captain Jason Holder, who had taken the bold decision to bat first after winning the toss on a green-tinged pitch, and Devendra Bishoo were both nine not out.
But they struggled in overcast conditions and only when Kieran Powell and Shai Hope -- fresh from Headingley scores of 147 and 118 not out, his first two hundreds in Test cricket -- were sharing a partnership of 56 did West Indies look like getting back on level terms.
Also Read
Anderson, wicketless in the second innings at Leeds, should have had his 498th Test wicket when he took Kraigg Brathwaite's outside edge with the opener, who made 134 and 95 at Headingley, on three.
It was not a costly error as Anderson, however, squared Brathwaite up on 10, and wicket-keeper Jonny Bairstow made no mistake to leave West Indies 18 for one.
- Roland-Jones strikes on return -
==================================
Rain then stopped play for 40 minutes and when the match resumed Anderson had Kyle Hope out for a duck when the batsman, trying to withdraw his bat, was well caught by a diving Bairstow.
Anderson had taken two wickets for no runs in 12 balls and West Indies were 22 for two.
The 23-year-old, carrying on from where he left off, marked his first ball by punching Anderson through the covers for four.
At lunch the West Indies were 35 for two, with Powell 17 not out and Shai Hope unbeaten on eight.
Left-handed opener Powell drove Stuart Broad for four and Shai Hope followed up with a textbook off-driven boundary against Anderson.
Despite Anderson being on the brink of becoming just the sixth bowler in history to take 500 Test wickets, England captain Joe Root removed him from the attack.
Toby Roland-Jones, recalled on his Middlesex home ground after being dropped in favour of all-rounder Chris Woakes at Headingley, then got in on the act.
Four balls later, 78 for three became 78 for four when Stokes held a low caught and bowled chance to dismiss Powell (39) off a hard-hit drive.
Roland-Jones struck again when the impetuous Jermaine Blackwood was bowled middle stump heaving across the line.
Stokes, making up for being given just the five overs by Root in the second innings at Headingley, produced a superb delivery to square up Roston Chase and bowl him with a ball that clipped the top of off stump before removing Shane Dowrich.
Disclaimer: No Business Standard Journalist was involved in creation of this content