Samuels, 34, anchored the innings with his 95-ball knock, hitting one six and 15 fours in the day-night game that was reduced to 36 overs a side after a rain interruption of more than two hours.
Under the revised Duckworth-Lewis target, Sri Lanka need 190 off 36 overs for a 3-0 sweep of the series.
The visitors, who lost the first two ODIs, were off to a disastrous start after being put in to bat at the Pallekele stadium.
Andre Fletcher (six) was trapped leg before off Suranga Lakmal while Dilshan took another catch off Malinga to send back Jermaine Blackwood.
More From This Section
Denesh Ramdin lobbed a short ball from Dushmantha Chameera to wicketkeeper Kusal Perera who lunged forward to complete a neat catch and leave West Indies reeling at 18-4.
Samuels then rebuilt the innings almost single-handedly, reaching his second successive half-century and ninth ODI ton in the process.
The one-day series will be followed by two Twenty20 games.