Sent out to field after losing the toss, the West Indies restricted Sri Lanka to 131/4 thanks largely to the performances of Fabian Allen and Jason Holder.
Allen went on to play a crucial role in the chase in a Player of the Match performance.
In trouble at 112/7, the West Indies needed 20 runs to win in the last two overs. Allen only needed one, finishing it in the 19th by smashing Akila Dananjaya (0/53) for three sixes, sealing the series 2-1.
He finished not out on 21 off six to go alongside his figures of 1/13 with the ball.
The West Indies started the chase confidently, with Evin Lewis and Lendl Simmons putting on 37 runs for the first wicket.
Their fast start spurred Sri Lanka captain Angelo Mathews to turn to his trump card with the ball, Wanindu Hasaranga (2/13), in the fifth over and the move paid immediate dividends.
The leg-spinner trapped Lewis (21) in front in his first over and had Simmons (26) stumped in his second.
Seamer Dushmantha Chameera (2/23) went on to dismiss Kieron Pollard for a duck in the eighth over and Nicholas Pooran for 23 in the 15th, with Lakshan Sandakan removing Chris Gayle (13) in between.
It looked like things were going off the rails for the hosts in the 17th when Sandakan (3/29) removed Rovman Powell (7) and Dwayne Bravo (0) off consecutive deliveries, leaving the West Indies at 105/7.
Holder (14*) and Allen ensured there would be no more hiccups from there however, putting on an unbeaten 29-run stand to wrap up the match.
Earlier, Allen took a spectacular catch off his own bowling to dismiss Sri Lankan opener Danushka Gunathilaka (9) in the third over of the innings. Jumping to his right, the all-rounder pulled in a tough chance with one hand.
Things got worse for Sri Lanka before the end of the Powerplay as Niroshan Dickwella (4) fell to Kevin Sinclair (1/19) and Pathum Nissanka (5) to Holder. When Mathews (11) was dismissed by Obed McCoy, Sri Lanka were in serious trouble at 46/4.
It took an 85-run stand between Dinesh Chandimal (54*) and Ashen Bandara (44*) to rebuild the innings from there.
While the pair managed to up the ante in the final few overs, they were unable to take Sri Lanka much further than 130, leaving the bowlers with plenty of work to do.