Muttiah Muralitharan was forced to wait for the chance to become the world's first bowler with 800 Test wickets, as India held their nerve to end the second session on the fourth day of the first match at Galle on 68 for two.
Asked to follow on from their first-innings total of 276, the visitors were rocked by the early loss of both their openers, but by tea, veterans Sachin Tendulkar and Rahul Dravid had built the innings towards some respectability with unbeaten scores of 21 and 12 respectively.
Earlier in the day, retiring spinner Muralitharan, in his final Test, had inched to within three wickets of yet another landmark, snapping up five Indian first-inning scalps to force the follow-on a little after lunch, and set up a mouthwatering final session.
Just as it was in the first innings, Lasith Malinga dealt India an early second-inning blow, as Gautam Gambhir edged a simple catch to the wicketkeeper without scoring, in only the third delivery of the innings.
Virender 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 Chanaka Welegedara.
Tendulkar and Dravid played the patient game, the former hitting four boundaries to give the visitors some respite in a day dominated by the home side. India had started the morning session at 140 for three in their first innings, in response to Sri Lanka's 520-run total. Sehwag reached his 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. However, his joy was short lived as, on 109, Welegedara forced him into a mis-timed cut shot off a wide delivery that only found Tharanga Paranavitana at slip.
And the visitors were dealt a second blow as overnight batsman VVS Laxman (22) lofted a trademark Lasith Malinga bouncer to the safe hands of Tillakaratne Dilshan at deep square leg.
Yuvraj Singh and skipper Mahendra Singh Dhoni then steadied the ship, the former reaching his ninth Test fifty from 58 balls. However, it was Muralitharan who had the last laugh as he 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.
And the wickets continued to fall as new man Harbhajan Singh tried to charge Herath but missed the ball completely to give Prasanna Jayawardene an easy stumping, leaving them 260 for eight at lunch. After the break, it took exactly seven overs and for Muralitharan to wrap up the Indian innings, snapping up the wickets of Pragyan Ojha and Abhimanyu Mithun to bring about the follow-on.