Rangana Herath took six wickets first-innings wickets to put West Indies in a spin as Sri Lanka enforced the follow-on on the third day of the opening Test at Galle on Friday.
The wily left-arm spinner picked up four wickets on the third day to complete his 23rd five-wicket haul in tests.
Herath inflicted more misery on the hapless touring side by dismissing opener Kraigg Brathwaite lbw for 34 in West Indies' second innings and they finished the day on 67 for two, still needing 166 runs to avoid an innings defeat.
Shai Hope (six) was the other opener out when he was bowled by Milinda Siriwardana to become the debutant all-rounder's first Test victim.
Herath's 23rd five-wicket haul came in his 64th Test and it was his second successive five-wicket haul at Galle.
He is now just 15 short of becoming the third Sri Lankan to take 300 Test wickets.
"The wicket has become more bowler-friendly today after it favoured the batsmen on the first two days," Herath told reporters after play.
"I hope to take more wickets... in this series to reach closer to the 300 wickets mark," he added.
Darren Bravo (20) and nightwatchman Devendra Bishoo (six) were at the crease at stumps.
Bravo (50) had offered resistance in the first session too, making his 12th half-century in tests before falling to Herath, Dinesh Chandimal completing a brilliant acrobatic catch at mid-wicket to dismiss the left-hander.
Herath struck in his second over of the day with an innocuous delivery which Marlon Samuels (11) made a mess of.
The batsman failed to connect on a pull shot and the ball, going way down the leg side, hit his thigh and went on to disturb the stumps.
Jermaine Blackwood (11) did not last long either, edging Dhammika Prasad to Siriwardana at slip where the fielder juggled a catch but held on.
Jason Holder (19), leading the side for the first time in tests, gave Prasad his second wicket when he edged behind to wicketkeeper Kusal Perera after hitting the paceman for two consecutive boundaries.
Wicketkeeper Denesh Ramdin fell in similar fashion to fast bowler Nuwan Pradeep before Kemar Roach, who was dropped on five by Sri Lanka captain Angelo Mathews at slip off Herath, and Jerome Taylor (31) launched a counter-attack.
Taylor hit four boundaries and a six in his 31-ball knock and his 46-run stand for the eighth wicket with Roach gave West Indies hope of saving the follow-on.
Roach (22) also added 34 with Bishoo for the ninth wicket but Herath ensured they fell short by dismissing him and Shannon Gabriel off successive deliveries shortly after tea.
Scoreboard
Sri Lanka 1st innings
Dimuth Karunaratne c and b Samuels 186
Kaushal Silva c Ramdin b Roach 17
Lahiru Thirimanne c (sub) Chandrika b Bishoo 16
Dinesh Chandimal c Blackwood b Taylor 151
Angelo Mathews c and b Holder 48
Milinda Siriwardana c Ramdin b Taylor 1
Kusal Janith Perera b Gabriel 23
Dhammika Prasad c Holder b Bishoo 13
Rangana Herath lbw Bishoo 0
Tharindu Kaushal not out 9
Nuwan Pradeep c Gabriel b Bishoo 0
Extras: (b4, lb5 w5 nb 6 ) 20
Total: (all out; 152.3 overs) 484
Fall of wickets: 1-56 (Silva), 2-101 (Thirimanne), 3-339 (Karunaratne), 4-425 (Chandimal), 5-427 (Siriwardana), 6-448 (Mathews), 7-467 (Prasad), 8-467 (Herath), 9-475 (Perera), 10-484 (Pradeep)
Bowling: Taylor 20-4-65-2, Roach 19-3-57-1, Holder 21-4-36-1, Gabriel 20-2-76-1, Samuels 27-4-84-1, Bishoo 40.3-2-143-4, Brathwaite 5-0-14-0
West Indies 1st innings
Kraigg Brathwaite lbw Herath 19
Shai Hope b Herath 23
Darren Bravo c Chandimal b Herath 50
Marlon Samuels b Herath 11
Jermaine Blackwood c Siriwardana b Prasad 11
Denesh Ramdin c Perera b Pradeep 23
Jason Holder c Perera b Prasad 19
Kemar Roach St Perera b Herath 22
Jerome Taylor c Mathews b Kaushal 31
Devendra Bishoo not out 23
Shanon Gabriel b Herath 0
Extras: (b4 lb7 w1 nb7) 19
Total: all out (82 overs) 251
Fall of wicket: 1-33 (Brathwaite), 2-49 (Hope), 3-70 (Samuels), 4-111 (Blackwood), 5-132 (Bravo), 6-165 (Holder), 7-171 (Ramdin), 8-217 (Taylor), 9-251 (Roach), 10-251 (Gabriel)
Bowling: Prasad 15-6-38-2, Pradeep 15-4-56-1, Herath 33-9-68-6, Kaushal 14-4-65-1, Siriwardana 5-2-13-0
West Indies 2nd innings:
Kraigg Brathwaite lbw Herath 34
Shai Hope b Siriwardana 6
Darren Bravo not out 20
Devendra Bishoo not out 6
Extras (nb1) 1
Total: 2 wickets (27 overs) 67
To bat: Marlon Samuels, Jermaine Blackwood, Denesh Ramdin, Jason Holder, Jerome Taylor, Kemar Roach, Shannon Gabriel
Fall of wicket: 1-18 (Hope), 2-60 (Brathwaite)
Bowling: Prasad 3-1-4-0, Herath 7-3-17-1 Pradeep 4-1-7-0, Siriwardana 6-1-30-0, Kaushal 7-3-9-0
Toss: Sri Lanka
Umpires: Marias Erasmus (RSA) and Richard Illingworth (ENG)
TV umpire: Simon Fry (AUS)
Match referee: David Boon (AUS)