Sri Lanka clung on for a thrilling one-run ODI win over the West Indies to secure a spot in the final of the triangular series in Zimbabwe.
Set a steep 331-run target, opener Evin Lewis (148) hit a maiden ODI ton to take the West Indies close, but needing 10 to win from the final over with just two wickets remaining, they fell just short on 329-9.
Sulieman Benn hit a six in Pradeep's final over to make the equation a much simpler three from three required, but Benn holed out at deep cover two balls later, and a final-ball yorker limited Jason Holder (45no) to just one run to ensure victory for Sri Lanka.
They now progress to Sunday's final, while the West Indies must avoid defeat in their final group game against hosts Zimbabwe on Friday if they are to earn a re-match.
Earlier, Niroshan Dickwella and Kusal Mendis both hit 94 as Sri Lanka racked up 330-7 from their 50 overs after being put into bat by the West Indies.
Kusal Perera fell early on, bowled by Shannon Gabriel, but then consecutive century stands for the second and third wickets sparked Sri Lanka's innings.
Dhananjaya de Silva (58) first put on 105 with Dickwella, before he and Mendis went two runs better with their partnership.
Holder (3-57) broke the stand by trapping Dickwella lbw, then Mendis too fell agonisingly short of a century when edging Ashley Nurse (1-58) behind.
Despite those setbacks, Sri Lanka finished strongly, adding 45 runs in the last five overs to take them past 300 - skipper Upul Tharanga striking a brisk 26 off 19 balls, and Sachith Pathirana an unbeaten 24 from 16.
Playing just his fourth ODI, Lewis - unfazed by the daunting target, and wickets continuously falling around him - smashed 15 fours and four sixes in his 122-ball knock.
While he breezed through to a first ODI hundred, no other West Indies batsman managed more than 26, till Holder came to the crease.
With those two out in the middle with 10 overs to go, and a manageable 71 runs needs from 60 balls, the West Indies looked to be favourites, only for Lewis to be run-out off a horrible mix-up between the pair in the very next over.
Holder did his best to make amends and shepherd the tail to victory, but his side came up just short in a dramatic finish.
(Sky Sports)