A gutsy 89 off 71 balls by Upul Chandana and sloppy fielding by the West Indies were important factors in a stubborn fightback by the touring team.
Sri Lanka needed 18 runs off the last 12 balls but fast bowler Vasbert Drakes went for 14 in a costly penultimate over.
Tillakaratne Dilshan wrapped up the game and the series with a boundary as Sri Lanka reached the target of 313 with three balls to spare.
Skipper Brian Lara's innings of 116 had carried the West Indies to a record one-day score at the Kensington Oval ground in Barbados. But Sri Lanka went one better to equal their previous best when chasing a target in a one-day international.
"In my career (199 ODIs) there are very few times that Sri Lanka has put on that rate, chasing more than 300 runs," skipper Marvan Atapattu told reporters.
"To do that and win a series abroad is a tremendous achievement and I couldn't ask for anything more."
Man-of-the-match Chandana was called into the side in the belief his leg spin would come in useful on a slow wicket. His figures of none for 40 from four overs were forgettable but he turned in a batting display he called his 'best ever knock'.
Sri Lanka started briskly with Romesh Kaluwitharana and Sanath Jayasuriya putting on 71 for the first wicket. Mervyn Dillon and Corey Collymore conceded 56 runs off the first eight overs.
West Indies seemed to be on course when Kaluwitharana was run out for 34 by a sharp throw from Ricardo Powell, leaving Sri Lanka on 78 for two.
Atapattu was lucky to escape when Chris Gayle dropped a simple chance at slip but he dug in to make 47 before being run out by a spectacular long-range throw from Sarwan.
Chandana, though, provided the aggression Sri Lanka needed. Young off spinner Ryan Hurley, who had performed well, was his first victim, going for two sixes over mid wicket in consecutive overs.
Kumar Sangakkara also weighed in with 31 before he pulled Drakes straight to Wavell Hinds at deep mid wicket.
Chandana then forged a 101-run stand with Mahela Jayawardene which was helped by a catalogue of errors in the field.
Hurley and David Bernard both dropped Chandana in the outfield in the 47th over before he was finally caught at mid wicket off Collymore after thumping six fours and four sixes.
Drakes's bowling fell apart in the penultimate over, although he did remove Jayawardene for 32.
Lara acknowledged his team's bowling and fielding had wilted under pressure.
"You are not going to win the game if one batsman gets three or four chances in the field... it's a mental thing. We seem to be left wanting under pressure," he said.
Lara was unlucky to be on the losing side after scoring his 17th ODI century.