West Indies 275 for 5 (Bravo 102, Hope 64, Pollard 53*) beat Sri Lanka 274 for 6 (Hasaranga 80*, Bandara 55*, Hosein 3-33) by five wickets
Darren Bravo's first century in nearly five years, along with fifties from Shai Hope and Kieron Pollard, meant Wanindu Hasaranga's rearguard 80 not out would ultimately be in vain, as West Indies hunted down their target with five wickets to spare, to sweep the three-match ODI series.
The result not only extended Sri Lanka's losing streak against West Indies in ODIs to six games, but also means they remain rooted at the bottom of the World Cup Super League, yet to register any points.
And it was once more the familiar failings that cropped up to haunt Sri Lanka, as a middle-order collapse with the bat - despite a now-customary Hasaranga revival - meant their total was not quite imposing enough to trouble the West Indian big-hitters. With the ball, Sri Lanka never quite seemed to trouble West Indies consistently, relying more on batsman error than anything else for their breakthroughs.
This despite Sri Lanka's chief tormentors from the previous games, such as Evin Lewis and Nicholas Pooran, being removed relatively cheaply. It was only Hope that remained a constant, going on to register his sixth consecutive ODI score of fifty or more - the tenth man to do so, with only Javed Miandad (9) having scored more - and putting on a crucial 109-run third-wicket stand with Bravo.
Bravo's 132-ball 102 was his fourth ODI century and his first since June 2016; it was also his first fifty-plus score in a little over two years. Along with Hope, he took the sting out of a Sri Lanka attack buoyed by two early scalps - the first time this series they had secure such early breakthroughs. The pair occupied the crease between the 10th and 32nd over, when Hope miscued one to deep midwicket. Until that point they had gradually ground down the Lankan bowlers; yes, the number of dot balls was a concern, but both Hope and Bravo's ability to find the boundary whenever the required rate threatened to get out of hand was uncanny.
Once Hope fell, and Pooran shortly after that, Sri Lanka once more might have scented a sniff of an opening, but that was again snuffed out by the home side's adeptness at going big when needed.
Captain Pollard joined Bravo at the crease, and they put on 80 for the fifth wicket off 71 deliveries. By the time Bravo was dismissed courtesy of a spectacular diving take by Dimuth Karunaratne at extra cover, the equation was down to 26 off 23 and never likely to go Sri Lanka's way.
But it could have been much worse for them if not for a magnificent counterattack from Hasaranga and Ashen Bandara earlier in the day. The pair put on unbeaten 123-run seventh-wicket stand to rocket-charge the Sri Lanka innings, after the outstanding Akeal Hosein had again exposed the fault lines running through their batting.
Even more impressive was the fact that Hasaranga's 60-ball 80 - the highest ODI score by a Sri Lanka No. 8 - was made on virtually one-leg, as injury saw the young allrounder limp through most of his knock.
But a heavily strapped leg be damned, Hasaranga would not be bowed. Cutting, driving, hoicking, scooping, whipping, he played an innings that utilised all sides of the North Sound ground. Though he saved his best for the final over, taking Jason Holder - himself off the field for a much of the innings with an injury - for 20 runs, including a glorious front-foot swat-pull over midwicket for six.
Alongside him, Bandara did his claims for a permanent role in the Sri Lanka first XI no harm at all, providing the ideal foil to Hasaranga's stand-and-deliver approach. In comparison to his partner's seven fours and three sixes, Bandara only managed four boundaries. However, most of them, including a smoked straight six off Fabian Allen, came after the 45th over just as Sri Lanka would have been hoping to up the scoring.
Together, the pair plundered 63 runs off the final five overs to take Sri Lanka to their highest total of the series. When they came together, at 151 for 6 at the end of the 32nd, a score in that region would have been beyond even the most optimistic observer.
Much of the damage was done by the left-arm orthodox of Hosein, who had run roughshod through Sri Lanka's middle order. Such was his impact that, having been introduced into the attack in the 19th over, Pollard proceeded to bowl out Hosein's 10 overs in a solitary spell. Accounting for the wickets of Pathum Nissanka, Dinesh Chandimal and Dasun Shanaka - all either bowled or lbw - he would finish on figures of 3 for 33.
Prior to that Alzarri Joseph had picked up the once again impressive Danushka Gunathilaka with a short ball that was too quick for him, the left-hander top edging a hook onto his helmet to lob an easy catch at point. Jason Mohammed meanwhile castled Dimuth Karunaratne straight after.
The pair had put on 68, before their wickets started a collapse that would see Hosein take a grip and Thisara Perera run-out, until Hasaranga and Bandara's unexpected rescue act - one that was cruelly in the end not good enough.