Openers Kraigg Brathwaite and Kieran Powell nervily negotiated six overs before stumps after the hosts had declared on 490-8 after captain Joe Root, Dawid Malan, Ben Stokes and Chris Woakes all joined Mark Stoneman in notching half-centuries.
A counter-attacking Moeen Ali also struck an impressive 93-ball 84 after being caught behind off a no-ball asEngland's batsmen attacked well, took advantage of yet more spilled catches and set their opponents a target of 322 for victory.
"We showed fantastic fight with the bat and to have that lead is gold," Moeen told Sky Sports. "We wanted a lead of around 180 so to have this one is fantastic. We wanted to counter in the last session and that's exactly what we did.
"We felt like Dawid Malan's 61 from 186 balls was a fantastic innings - he struggled at times but his knock was crucial for us. I sometimes go out there and think: 'I'm not going to score any runs here'. But today's situation was one I have been in before, trying to hit boundaries and play in a carefree fashion."
England began the day (28 August) on 171-3 and Root  notched his second half-ton of the match but was again unable to produce his 100 as he cut a Shannon Gabriel delivery straight to Shai Hope at gully. Confusion between wicket-keeper Shane Dowrich and slip fielder Powell led to Malan being inexplicably dropped on 32 as England reached lunch at 251-4 with a lead of 82.
Malan's workmanlike 50 took 162 deliveries to arrive, while the more aggressive Stokes brought up his 11th Test half-century in 92. The pair departed in quick succession following a drinks break as Stokes  somehow picked out Brathwaite at long-off and Malan  was bowled by spinner Roston Chase.
West Indies were handed further incentive when Jonny Bairstow  bizarrely attempted a reverse sweep off Chase and succeeded only in bottom edging the ball onto his middle stump.
Moeen and Woakes saw England through to tea at 357-7 and the former was handed a big reprieve when Dowrich's catch was chalked off due to leg-spinner Devendra Bishoo stepping over the line. He responded in terrific fashion but was stopped en route to what appeared a likely century after being caught in the deep by Brathwaite off Bishoo.
That ended a hugely profitable 117-run partnership, although returning ninth man Woakes still brought up his third Test 50 as West Indies were powerless to prevent the hosts from building a strong lead. The Warwickshire all-rounder had struck 61* and Stuart Broad chipped in with 14* before a bold declaration arrived after 141 overs.
The lively James Anderson, now just three wickets shy of his 500th Test dismissal, forced a couple of nervy lbw appeals but neither he, Broad nor Moeen could strike an early blow as a captivating contest heads to a fifth and final day.