West Indian batsman Evin Lewis struck his maiden one-day international hundred but a series of run-outs helped Sri Lanka to secure a one-run victory at Queens Sports Club on Wednesday and advance to the triangular series final. Playing just his fourth ODI, Lewis struck a superb 148 from just 122 balls as the West Indies went in pursuit of Sri Lanka's 330 for seven, but lost two partners to direct hits and was then run out in a mix-up with his captain Jason Holder. Although Holder kept the chase on track with his unbeaten 45, he could only manage a single off the final ball of the game and saw his side fall agonisingly short, as they finished on 329 for nine. "We played a really good game up until the last over, and then didn't get over the line," said Holder. "Going forward we need to be a lot more precise in our calling to avoid those sorts of run-outs." The victory ensured Sri Lanka's passage to Sunday's final, while the West Indians must avoid defeat in their final game against hosts Zimbabwe on Friday if they are to progress. Sri Lanka's total was set up by Niroshan Dickwella and man-of-the-match Kusal Mendis, who both scored 94 after the West Indies had won the toss and opted to bowl first. While the first four tri-series games had seen cautious batting early on, Sri Lanka broke the trend as Dickwella and Dhananjaya de Silva overcame the early loss of Kusal Perera to score at better than a run a ball in the opening powerplay. The duo put on 105 for the second wicket before de Silva was caught and bowled by Kraigg Brathwaite for 58, and Mendis went on to add 107 for the third wicket with Dickwella. Holder was responsible for breaking the second stand when he trapped Dickwella lbw, while Mendis also fell short of three figures when he edged a delivery from Ashley Nurse through to the wicketkeeper. Despite those setbacks, Sri Lanka finished strongly as they added 45 runs in the last five overs to set their opponents a stiff target. With Lewis taking little time to get stuck into the Sri Lankan seamers, the West Indies made a similarly brisk start. Lewis and Johnson Charles put on 63 for the first wicket in eight overs, and Kraigg Brathwaite added 70 for the second wicket with Lewis to put the West Indies on track for their first chase of more than 300 runs. But after Brathwaite was bowled by seamer Asela Gunaratne, both Shai Hope and Jonathan Carter were run out by direct hits. A further blow came when Lewis was run out going into the final stretch, and although Holder edged the West Indies closer, they went into the final over needing 10 to win. Sulieman Benn shocked everyone when he smashed Nuwan Pradeep's third delivery into the stands at midwicket, but when he holed out off the penultimate delivery, Holder was left with too much to do.