Sri Lanka were 89 without loss when rain ended play early on the fourth day of the first Test after being made to bat again by the West Indies having fallen three runs short of the follow-on total of 381.
Tharanga Paranavitana and Tillakaratne Dilshan were both on 44 as Sri Lanka, who were dismissed for a first innings total of 378, still trailed West Indies by 113 runs.
Off-spinner Shane Shillingford, playing in his fourth Test, returned career best figures of four for 123 and proved to be the main stumbling block for the hosts.
He picked up the wicket of Dammika Prasad (47) who added 72 runs with Prasanna Jayawardene for the eighth wicket.
It was the only time West Indies felt they were challenged and once the stand was broken the last two wickets fell in no time.
Prasanna Jayawardene, came close to saving the follow-on but top-edged a sweep off Shillingford and was last man out for 58.
Shillingford also added the wicket of Randiv for 12, bowled through the gap between bat and pad.
Sri Lanka had resumed on 165 for three in response to the tourists' 580-9 declared and West Indies continued to pile on the pressure, capturing three wickets in the morning session.
They broke through in the sixth over when paceman Kemar Roach had Mahela Jayawardene caught behind by wicketkeeper Carlton Baugh for 59, ending a 61-run fourth-wicket partnership with Thilan Samaraweera.
In the previous over, Jayawardene had been dropped by Dwayne Bravo at leg slip off Shillingford.
Samaraweera completed his half-century but was unfortunate to be run out when backing up at the non-striker's end. Bravo stuck out his boot to block an Angelo Mathews drive and the ball went straight on to hit the stumps with Samaraweera (52) slightly out of the crease.
Mathews and Prasanna Jayawardene appeared to be taking Sri Lanka to lunch without any further loss but West Indies captain Darren Sammy brought Shillingford back on in the last over before the break and the spinner duly obliged by dismissing Mathews for 27 when he edged a catch to Sammy at first slip.
West Indies first innings: 580-9 declared
Sri Lanka first innings (overnight 148-3)
T Paranavitana b Roach 10
T Dilshan c Shillingford b Russell 0
K Sangakkara b DJ Bravo 73
M Jayawardene c Baugh b Roach 59
T Samaraweera run out 52
A Mathews c Sammy b Shillingford 27
P Jayawardene c Roach b Shillingford 58
S Randiv b Shillingford 12
D Prasad c Russell b Shillingford 47
A Mendis c DM Bravo b Roach 4
T Thushara not out 4
Extras: (b-8, lb-8, nb-13, w-3) 32
Total: (all out; 95.2 overs) 378
Fall of wickets: 1-6, 2-61, 3-132, 4-193, 5-227, 6-264, 7-295, 8-367, 9-374, 10-378.
Bowling: Roach 19-2-75-3 (3nb), Russell 15-1-73-1 (9nb, 3w), Shillingford 33.2-3-123-4, Sammy 11-2-41-0, DJ Bravo 16-4-47-1 (1nb), Gayle 1-0-3-0.
Sri Lanka second innings
T Paranavitana not out 44
T Dilshan not out 44
Extras: (w-1) 1
Total: (no wicket; 22 overs) 89
Bowling: Roach 6-0-18-0, Russell 2-0-17-0 (1w), DJ Bravo 7-0-30-0, Shillingford 5-0-20-0, Sammy 2-0-4-0.