Kumar Sangakkara crafted a superb, unbeaten 90 to lift the visitors to a competitive 8-219 in a match forced into the reserve day because of the elements and reduced to 41 overs-per-side.
Half-centuries by Darren Bravo (70) and Lendl Simmons (67) then threatened to take the home team to a revised target of 230 before a sense of haste in the midst of light rain and the cooler heads of the Sri Lankans saw the West Indies restricted to 9-190 in reply.
While the result pushes Sri Lanka to the top of the standings ahead of the Caribbean side by virtue of a better net run-rate, a victory for India over Angelo Mathews' team in the final preliminary match on Tuesday will result in the calculators again being deployed to determine the qualifiers for Thursday's final.
Sangakkara claimed the man of the match award for his excellent innings, but Mathews also made vital contributions with bat and ball in ensuring his side avenged the six-wicket defeat suffered at the hands of the West Indies in the opening match of the tournament in Kingston ten days earlier.
His 30 off 27 balls gave the innings important impetus towards the end and figures of four for 29, including the vital scalp of Chris Gayle at the start of the West Indies chase, proved critical in completing victory.
Gayle's demise triggered a slide with the West Indies reduced to 31 for four and seemingly out of contention.
Earlier, Roach was the most successful of the West Indies bowlers with 4-27 amid Sri Lanka's late batting surge, an effort masterminded by the experienced Sangakkara.
Staying focused on the task at hand, firstly with overnight partner Lahiru Thirimanne and playing with his trademark fluency, Sangakkara stepped up a gear, displaying a sense of adventure and taking considerably more risks in capitalising on wayward and indisciplined West Indies bowling.
A total of 31 extras contributed generously towards the Sri Lankan effort, a tally that included 24 wides and three no-balls.
"We were all over the shop and you can't really set fields for bad bowling. The number of extras conceded as well was totally unacceptable," was the frank admission of stand-in West Indies captain Kieron Pollard after it was all over.
"Bravo and Simmons kept us in the game when we batted, but if we're totally honest about it, we - myself included - haven't batted well as a team in this tournament."
Sangakkara's 95-ball knock, his 76th half-century in one-day international cricket, included one six and six fours but was defined more by trademark timing, placement and a sensible appreciation of the circumstances than the hell-for-leather hitting usually associated with the final stages of a limited-over match.
"If you hang in there, it becomes much easier to score runs on a pitch like," he said.
"When batting first, it's better to absorb the pressure and then look to accelerate later. The support from the other batsmen was really important."