Dwayne Bravo stopped Sri Lankan march but the West Indies still lost by 43 runs as the visitor levelled the series at 1-1 in Antigua.
Sri Lanka, who needed to win to keep the series alive after a four-wicket defeat on Wednesday, got off to a flying start after winning the toss and deciding to bat.
Openers Danusha Gunathilaka and Pathum Nissanka put on a blistering 94 off the first 10 overs. But then 37-year-old Bravo was called into action and he responded by running out Nissanka for 37.
Gunathilaka followed just four balls later in the 11th over, caught by Kevin Sinclair off Bravo at mid-off. The Sri Lankan opener went for a top score of 56 which featured four boundaries and two sixes.
Bravo also claimed the third wicket to fall when Lendl Simmons had the experienced Dinesh Chandimal caught for just three. The runs then dried up for Sri Lanka.
Having hit eight fours and three sixes in the first 10 overs, they managed just three more fours and one six in the second half of the innings. That included an eight-over stretch where the ball never crossed the boundary ropes.
PWH de Silva and Lakshan Sandakan then took three wickets apiece as West Indies were bowled out for just 117 with eight balls to spare. A 36-run stand between Lendl Simmons (21) and Chris Gayle (16) for the third wicket was the best the hosts could do.
No 10 Obed McCoy top scored for West Indies with a seven ball 23 that included two sixes and as many boundaries. Dushmantha Chameera also took two wickets for Sri Lanka.