A ton from Avishka Fernando followed by another good showing from Lasith Malinga meant West Indies could score only 315-9 chasing 339.
Earlier, Fernando played the role of sheet anchor, stitching 85 runs with Kushal Mendis (39) and then sharing 58 and 67 with Angelo Mathews (26) and Lahiru Thirimanne (45 off 33), respectively, as Sri Lanka went beyond 250 for the first time in the tournament. And as West Indies threatened to whip away their victory, Sri Lanka's fielding also disintegrated.
West Indies captain Jason Holder, also from Rihanna's homeland of Barbados, said her appearance in Riverside stadium was a pleasant surprise.
Left-hander Gayle tried to loosen the shackles but succeeded only in skying seamer Kasun Rajitha to Jeffrey Vandersay running back at gully in the 16th over, after facing 48 balls and hitting one four and a couple of sixes.
Fernando went in after a 93-run opening stand between Kusal Perera (64) and Dimuth Karunaratne (32) that ended in the 16th over when Karunaratne got a thin edge off rival skipper Holder and was caught behind. With Gayle gone West Indies hopes of chasing down a tall target simply disappeared until Pooran and Allen came together in partnership.
Sri Lanka are seventh in the standings - three points behind fourth-placed Pakistan - and have an outside chance of qualifying for the semi-finals by finishing in the top four if they win their remaining two games.
Isuru Udana has been the pick of Sri Lanka's bowler and Shimron Hetmyer will face a stiff challenge when he faces the left-armer.The angle created by Udana to a left-handed batsman will be a critical factor that will make this contest interesting between the two players. Sri Lanka plays India at the same ground on Saturday.
With that being said, the hundred against the West Indies further shows that Avishka Fernando is one prospect that Sri Lanka needs to stick with and nurture in the years to come. Ponting became Australia's captain, and won three World Cups.
West Indies have made one change to their playing XI.