Sri Lanka legend Muttiah Muralitharan was left needing two more wickets to reach a Test landmark of 800 as India finished day four of the first Test in Galle on 181 for five.
Muralitharan, playing in his final Test match, claimed six wickets as India, resuming on 140 for three, were bowled out for 276 and forced to follow on.
At stumps India still trailed by 63 runs, following Sri Lanka's first innings 520 for eight declared. Muralitharan claimed five for 63 from 17 overs in India's first innings and took one for 57 when they followed on, claiming the wicket of Yuvraj Singh.
India's second innings was rocked by the loss of openers Gautam Gambhir and Virender Sehwag before tea but Sachin Tendulkar (84) and Rahul Dravid (44) mounted a recovery. Tendulkar played with some freedom to chalk up his 55th Test fifty and launched Muralitharan for a huge six, while Dravid offered a solid anchor at the other end.
Dravid and Tendulkar's 119-run stand came to an end when the former was caught at leg gully attempting to flick Lasith Malinga. Just 11 deliveries later, Malinga struck again, this time with the prized scalp of Tendulkar, trapped lbw by a wicked yorker 15 short of his 48th Test century. Yuvraj became Muralitharan's fifth victim of the day, caught at slip, leaving India with a veritable mountain to climb.
Earlier in the day Sehwag had reached a first-innings century to give the Indians hope but a continual loss of wickets pegged back the scoring rate. The opener took all of 10 deliveries to bring up his 20th Test century as India looked to seize control of their innings in the morning session.
But, on 109, Chanaka Welegedara forced him into a mis-timed cut shot off a wide delivery that only found Tharanga Paranavitana at slip. The visitors were dealt a second blow as overnight batsman VVS Laxman (22) lofted a trademark Malinga bouncer to the safe hands of Tillakaratne Dilshan at deep square leg.
Yuvraj and skipper Mahendra Singh Dhoni then steadied the ship, the former reaching his ninth Test fifty from 58 balls. However, Muralitharan produced a peach of a delivery to disturb Dhoni's (33) stumps, before Yuvraj fell victim to just a hint of turn, lobbing an easy catch to slip, India eventually limping their way to 260 for eight at lunch.
After the break, it took exactly seven overs for the Indian innings to fold, Muralitharan snapping up the wickets of Pragyan Ojha and Abhimanyu Mithun to bring about the follow-on. Malinga dealt India an early second-inning blow, as Gambhir edged a simple catch to Prasanna Jayawardene without scoring, in only the third delivery of the innings.
Sehwag looked well set again - alongside Dravid - steering India to 42, but the fiery opener was brilliantly caught at backward point by Mahela Jayawardene off Welegedara. Tendulkar and Dravid played the patient game, thereafter to give the visitors some respite going into the tea break, in a day dominated by the home side.