Skipper Mahela Jayawardene (65 not out) and Kumar Sangakkara (39 not out) played the role of the seniors to perfection, getting the team over the West Indies' 129 for five in 15.2 overs.
Marlon Samuels (50) and Dwayne Bravo (40) lent respectability to the West Indies' total but it fell way short of a winning score at the Pallekele International Cricket Stadium here.
It was Sri Lanka's second win in the Super Eights in as many matches and they play their third and final game against England. The West Indies, who won against the English, next take on New Zealand.
The hosts seemed always in control after losing the dangerous Tillakaratne Dilshan (16) in the third over.
Veterans Jayawardene and Sangakkara paced the run-chase beautifully, guiding the team home without taking a risk.
Jayawardene played the way he plays best, hitting exquisite strokes all around the wicket. He struck 10 fours while Sangakkara collected five.
Earlier, the West Indies got off to a poor start, crawling to 16 for two in five overs. Chris Gayle's (2) wicket was the biggest blow for the team as he edged one off a slower one from Nuwan Kulasekara.
Samuels and Bravo steadied the ship with a 65-run stand but like the other batsmen found it difficult to accelerate.
It was the Caribbean's side lowest score in the T20 Internationals.