Chasing a modest target, West Indies started confidently, with Evin Lewis and Lendl Simmons putting on 37 runs for the first wicket.
Wanindu Hasaranga (2/13) gave Sri Lanka their first breakthrough in the fifth over of the innings as he dismissed Lewis (21). The leg-spinner removed Simmons (26) in his second over.
Thereafter, 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 over when Sandakan (3/29) removed Rovman Powell (7) and Dwayne Bravo (0) off consecutive deliveries, leaving the West Indies at 105/7.
However, Holder (14*) and Allen (21*) stitched an unbeaten 29-run stand to wrap up the match.
Earlier, Allen dismissed Sri Lankan opener Danushka Gunathilaka (9) in the third over of the innings.
Before the end of the powerplay, Niroshan Dickwella (4) fell to Kevin Sinclair (1/19) and Pathum Nissanka (5) to Holder as things got worse for Sri Lanka. When Mathews (11) was dismissed by Obed McCoy, visitors were in serious trouble at 46/4.
From there on, Dinesh Chandimal (54*) and Ashen Bandara (44*) shared an 85-run stand between them to rebuild the innings. The pair upped the ante in the final few overs and took Sri Lanka to 131/4 in 20 overs, which were not enough in the end. (UNI)