Galle - India's bowlers tore through the Sri Lankan top order to put the visitors firmly on top on the second day of the first Test in Galle on Thursday.
Paceman Mohammed Shami picked two wickets in the same over and Umesh Yadav got rid of opener Dimuth Karunaratne after India posted a commanding 600 all out in their first innings.
Former captain Angelo Mathews was batting on 54 with Dilruwan Perera on six when stumps were drawn for the day, with Sri Lanka still trailing by 446 runs with five wickets in hand.
Opener Upul Tharanga struck a defiant 64 off 93 balls but was run out thanks to quick fielding by Abhinav Mukund.
Mukund also took a fine diving catch to send back Niroshan Dickwella (eight) and reduce the hosts to a shaky 143-5.
Yadav gave his side an early breakthrough after the Indian lower-order batsmen scored at a quick pace despite losing wickets at regular intervals.
Yadav had Karunaratne trapped leg before and although the batsman went for a review, the decision was upheld after replays showed the ball pitching on the middle stump.
Shami then dismissed debutant Danushka Gunathilaka for 16 and Ajantha Mendis for a duck in the space of four balls.
Mathews, who quit as captain after Sri Lanka's recent one-day series defeat to Zimbabwe at home, tried to steady the innings and had faced 91 deliveries so far.
Earlier, paceman Nuwan Pradeep clinched his maiden five-wicket Test haul, putting the brakes on India's free scoring.
Pradeep (6-132) dismissed Cheteshwar Pujara for 153, triggering a batting collapse which saw the tourists lose four wickets in a lively first session after resuming the day at 399-3.
Pujara hit 13 fours in his 265-ball knock to match his previous Test best of 153 against South Africa at Johannesburg in 2013.
Hardik Pandya struck a half-century on debut as India's last two wickets added a quickfire 83 runs in 71 balls to lift the side from 517 for 8.
Shami hit Rangana Herath for three sixes while Pandya lofted Pradeep for as many sixes in an attacking batting display by India's lower order batsmen.
Ajinkya Rahane (57) looked solid but was sent back to the pavilion after Karunaratne dived for a low catch on his right off fast bowler Lahiru Kumara.
Ravichandran Ashwin and Wriddhiman Saha struck back with a sixth-wicket stand of 59, but India's counter-attack unravelled as Sri Lanka dismissed the duo in the space of six balls.
Ashwin (47) fell short of a well-deserved half-century while Saha (16) became the first victim of skipper Herath (1-159).
Things got worse for Sri Lanka, with doctors confirming that all-rounder Asela Gunaratne was out for the remainder of the Test series with injury.
Gunaratne suffered multiple fractures on his left thumb while trying to take a catch off Shikhar Dhawan on the first day of the match on Wednesday.
"Medical experts have indicated Gunaratne will be out of action for a minimum of 6-8 weeks, and will be returned to full mobility under a strictly managed rehabilitation regime over the period," it said in a statement.