This victory gave England an unbeatable 2-0 lead in the series.
With 385 to win, the touring team got off to a strong start led by skipper Kraigg Brathwaite and Mikyle Louis, who put together a strong opening partnership of 61.
But when Chris Woakes removed Louis, the West Indies collapsed, losing five wickets in 35 balls.
Following Jamie Smith's catch of Louis for 17, Kirk McKenzie edged Bashir to Smith for one, and Brathwaite was dismissed for 47 after he fingered a catch off Woakes to Smith.
West Indies trailed 82-5 when Bashir trapped Hodge, who had scored a century in the first innings, leg before wicket for a duck, and Alick Athanaze flicked Bashir to Joe Root at slip for a single.
Gus Atkinson trapped Joshua Da Silva lbw for 14, and Kevin Sinclair did not last long, skying a catch off his wrist to Zak Crawley in the slips off Mark Wood.
To finish with 5-41, Atkinson bowled Alzarri Joseph for a duck, Bashir bowled Jason Holder for 37, and the spinner bowled Shamar Joseph for 8.
'I didn't see it happening that quickly after the opening partnership,' England captain Ben Stokes told the BBC.
'You could see at the end of our innings the wicket started misbehaving, I thought the way we fought back after that first wicket was impressive. On a wicket that didn't really do that much, I thought Shoaib showed his class.'
Prior to this, Root amassed a magnificent century to guide England to a 425 all out second-inning total.
Following Harry Brook's explosive 109, Root scored 122, his 32nd test century.
With just 132 deliveries under his belt, Brook scored his fifth test century and first at home, connecting with Root for 189 runs at the fourth wicket to give England the upper hand.
Just before noon, Jamie Smith (six) and Stokes (eight) were removed when wicketkeeper Da Silva caught Brook off Seales.
But Root did not give up, reaching three figures with a clean drive to the edge of the cover.
After surpassing West Indian Shivnarine Chanderpaul to go up to ninth place on the all-time list of top test run scorers, Root's innings came to an end when Woakes fell for 12.
Jayden Seales dismissed Wood for a duck, and the West Indies fast bowler removed Bashir from the game as well, leaving Atkinson undefeated at 21.
'It's a tough loss, we pretty much lost 10 wickets in a session. It's not good enough,' Brathwaite told the BBC.
'It was obviously better than Lord's but with the ball we weren't as consistent as we should have been. With the bat, we were good in the first innings but not in the second.'