Sri Lanka survived a dramatic late batting charge from Ramnaresh Sarwan to move one step closer to the Super Sixes at Newlands on Friday night.
West Indies, chasing 229 for victory after an uncharacteristically restrained and nervy Sri Lanka batting performance earlier in the day, lost by six runs after an evening of heart-pounding tension and twisting fortunes.
Sri Lanka had looked certain winners mid-way through the West Indies innings after a superb bowling performance from Chaminda Vaas but Sarwan, who had earlier been carried from the field by paramedics after a sickening blow to the head, revitalised their hopes by thrashing 47 from 44 balls.
However, with 16 runs required from the last two overs, a brilliant penultimate over from Muttiah Muralitharan cost just two runs and Pulasthi Gunaratne then held his nerve in the final nerve-jangling last over.
Sri Lanka, now leading Pool B with 16 points, still need to win against South Africa on Monday to be assured of qualification whilst West Indies look set for an early exit notwithstanding a freak series of results in the remaining matches.
Should Sri Lanka lose to South Africa, assuming Kenya beat Bangladesh and New Zealand beat Canada, four teams will be level on 16 points.
In that scenario, Kenya and South Africa progress automatically on the head-to-head rule with the final place being decided by net run rate.
Vaas, the man of the match and the leading wicket-taker in the tournament with 16 scalps, bowled two incisive spells, finishing with four wickets for 22 runs from his ten overs.
The left-armer's first spell, during which he had succored opener Wavell Hinds into playing across the line and lulled becalmed Brian Lara into an expansive drive, pegged back the West Indians early on.
But it was his crucial reverse swinging second spell that swung the game decisively towards Sri Lanka as an indipper trapped top scorer Chris Gayle lbw and Ridley Jacobs was dubiously adjudged caught at the wicket second ball.
They had appeared to be cruising towards victory on 121 for three with Gayle blocking and biffing 55 from 74 balls, his first substantial score of the tournament. The tall left-hander added 59 with the fidgety Shivnarine Chanderpaul.
When Muttiah Muralitharan, who spun the ball prodigiously on a dry Newlands pitch, jack-knifed an off-break past the bat-slinging blade of Ricardo Powell, West Indies had lost three wickets for one run and were 122 for six.
After mid-innings collapse, Chanderpaul kept West Indies in the chase, poking, prodding and clumping his way past fifty for the 24th time in his career.
The left-hander harried 47 runs with Vasper Drakes before Chanderpaul lofted a running catch to Marvan Atapattu to give Aravinda de Silva his 100th wicket in One-Day Internationals.
Ramnaresh Sarwan, returned to the fray with West Indies needing 60 from 47 balls. However, as Sri Lanka rotated their spinners, the run rate was quickly spiraling out of control.
Needing 42 from 24 balls, Drakes tried to launch Jayasuriya for six but skied a catch to Vaas running in from square leg.
Sarwan responded with a flat six over long off, a stinging straight drive for four and a lofted three to revive West Indian hopes once more with 29 required from the last three overs.
Jayasuriya gambled on using de Silva and the off-spinner was smote for 13 in the over as Atapattu spilled a regulation catch off Sarwan at backward square.
Muralitharan returned for the penultimate over and conceded just two runs, meaning Sri Lanka needed 14 runs from the last six balls of the match.
Pulasthi Gunaratne was pulled back into the attack having not bowled since an expensive opening burst and sealed Sri Lanka's win, leaking an early boundary but conceding just seven runs in all.
Earlier, Jayasuriya, who won his fifth consecutive toss and elected to bat first, had top scored for the Sri Lankans with an unusually subdued 66 from 99 balls that included just four boundaries.
The left-hander compiled 85 in 20.5 overs with Hashan Tillakaratne, who crawled to 36 from 68 balls before missing a straight ball from Wavell Hinds, after the early run out of Marvan Atapattu.
A mid-innings flutter, when four wickets fell for 43 runs, then threatened to leave Sri Lanka well short of a defendable total.
Aravinda de Silva (13), who looked in sublime form, was left stranded mid-pitch as Jayasuriya turned his back on the veterans call for a third.
Mahela Jayawardene's (9) wretched World Cup form continued as he scooped an attempted nudge to mid-wicket and Jayasuriya top edged a slog-sweep.
Russel Arnold then squeezed vital runs out of the lower middle order, adding 39 with Kumar Sangakkara (24) and 50 in 44 balls with Chaminda Vaas (28*).