Set a revised Duckworth-Lewis target of 163 in 26 overs, the hosts survived anxious moments before winning with 7 balls to spare at the Premadasa stadium.
The West Indies had scored 159-8 from 26 overs after being sent in to bat.
The start of the day-night match was delayed by an hour and 20 minutes due to persistent rain.
Further bad weather during the West Indies innings reduced the game to 26 overs a side.