Sri Lanka took three wickets in the last three overs to snatch a thrilling one-run victory over West Indies in the triangular one-day series on Wednesday.
Niroshan Dickwella and Kusal Mendis both scored 94 runs as Sri Lanka posted 330 for seven from their 50 overs but for the second game running, West Indies worked themselves into a winning position before falling agonisingly short of their target as they finished on 329 for nine.
Needing 10 runs off the final over bowled by Nuwan Pradeep, Sulieman Benn belted the third delivery for six to leave the West Indies requiring three runs from the final three balls.
But amid a frantic finish they could only manage one more run and must now battle hosts Zimbabwe on Friday to determine who will play Sri Lanka in Sunday's Tri-Series final.
A sparkling maiden ODI century from West Indies opener Evin Lewis (148 from 122 balls) was in vain as captain Jason Holder (45 not out) was the only other batsman to get past 30 in the innings.
As they had done in their last match against Zimbabwe, when they could only manage three from the final over to tie, West Indies failed to close out the match.
Lewis was one of three run outs in the innings that came at crucial times and kept Sri Lanka in the game.
Dickwella and Mendis shared a 107-run partnership for the third wicket as Sri Lanka posted a formidable 330 in their innings.
Dickwella fell six runs short of a century as he was trapped leg before wicket by Holder and Mendis then also missed out as he edged a delivery from Ashley Nurse.
Sri Lanka 330 for 7
(Dickwella 94, Kusal Mendis 94, Dhananjaya de Silva 58, Holder 3-57) beat West Indies 329 for 9
(Lewis 148, Holder 45*, Lakmal 2-67, Kulasekara 2-73) by one run