With 11 points, India are now almost through and another win in their next three games will seal their position in the top four as West Indies were knocked out with two games remaining.
India scored 268 for 7, riding on half-centuries by Virat Kohli (72 off 82 balls) and Mahendra Singh Dhoni (56 off 61 balls) and it turned out to be good enough as West Indies were shot out for 124 in only 34.2 overs.
Shami (4/16 in 6.2 overs) was at his best in the first spell as he first bounced Chris Gayle out and then bowled an off-cutter to remove Shai Hope.
In his second spell, he got Shimron Hetmyer while new ball partner Jasprit Bumrah (2/9 in 6 overs) was fast and accurate getting two wickets of successive deliveries.
Kuldeep Yadav (1/35 in 9 overs) and Yuzvendra Chahal (2/39 in 7 overs) were too hot for the Caribbean batsmen on a track, where run scoring became increasingly difficult with the passage of time.
The last seven wickets fell for 63 runs in a space of 14 overs which indicated the Caribbean plight.
Sunil Ambris (31, 40 balls) and Nicholas Pooran (28 off 50 balls) steadied the ship with a 55-run stand before both were dismissed in quick succession.
Hardik Pandya trapped Ambris plumb in-front before Pooran mistimed a lofted shot to Shami in the deep.
The skipper, Jason Holder then played a rank bad shot off Chahal as West Indies were knocked out of the contest at the halfway stage, reeling at 98 for five.