Muttiah Muralitharan triggered India's collapse with four quick wickets to boost Sri Lanka's hopes of enforcing a follow-on in the first Test here on Friday.
The wily off-spinner grabbed 4-38 as India struggled to reach 159-6 in their first innings at stumps on the third day in reply to Sri Lanka's mammoth 600-6 declared.
The tourists now require 242 more runs to make Sri Lanka bat again, with Venkatsai Laxman (19 not out) being the only specialist batsman left. Skipper Anil Kumble was unbeaten on one when bad light stopped play.
Muralitharan was instrumental in denting India's batting reputation as he claimed four of the five wickets that fell in the closing session. Among his victims was ace batsman Sachin Tendulkar (27).
He was brilliantly supported by debutant Ajantha Mendis, the latest spin sensation who took the important wicket of former India captain Rahul Dravid in his probing 18 overs.
Sri Lanka's batting star was Tillakaratne Dilshan, who scored an attractive 125 not out to become the fourth century-maker in the innings after skipper Mahela Jayawardene, Malinda Warnapura and Thilan Samaraweera.
In contrast, India's batting failed to flourish as they lost wickets at regular intervals on an easy-paced track, with the Sri Lankan spin duo doing the maximum damage by keeping constant pressure on the batsmen.
Virender Sehwag was the first to go, mistiming an attempted pull off seamer Nuwan Kulasekara to be caught by Waranpura at deep backward square-leg after smashing five fours in his 16-ball 25.
There was no respite from spin for the tourists as both Muralitharan and Mendis kept testing the batsmen with clever variations.
Muralitharan had Gautam Gambhir (39) caught driving by Samaraweera at short cover and Mendis bowled Dravid (14) with a delivery that turned slightly to hit the off-stump.
Muralitharan struck again when he removed Tendulkar, who was bowled off an inside-edge. He then accounted for Sourav Ganguly (23) and wicket-keeper Dinesh Karthik (nine).
Mendis, who wrecked India with a six-wicket haul in the Asia Cup final in Karachi early this month, was pressed into the attack after just 10 overs.
Sri Lanka continued to show their batting might as they added 178 to their overnight total of 422-4 for the loss of just two wickets.
Middle-order batsman Dilshan, 20 overnight, hogged the limelight as he completed his fifth Test hundred in the last over of the morning session with a four over mid-wicket off spinner Harbhajan Singh.
Dilshan made the most of the reprieve he earned on Thursday under a new experimental rule allowing players to seek a second opinion on umpiring decisions.
He was on one when given out caught behind off seamer Zaheer Khan by umpire Mark Benson of England, but asked the official to review the decision.
Benson consulted TV umpire Rudi Koertzen of South Africa before changing his decision as the ball had not made contact with the bat.
India's first success came when Samaraweera (127) cut Zaheer straight to Laxman at gully. The batsman added 16 to his overnight score of 111, hitting 18 fours in his 224-ball knock.
Dilshan gathered runs comfortably, playing handsome shots during his 170-ball knock containing one six and 12 fours.