India leg spinner Anil Kumble took three quick wickets on the fourth day to leave Sri Lanka struggling to save the final test yesterday.
Chasing 509 for victory, Sri Lanka, who trail the three-match series 1-0, were 235 for six at close of play. Jehan Mubarak (18) and Farveez Maharoof (two) were at the wicket.
Kumble, playing in his 100th test, dismissed Kumar Sangakkara (17), debutant Upul Tharanga (47) and Thilan Samaraweera (five) after the visitors were 39-1 at lunch.
In-form batsman Mahela Jayawardene made 57, his fourth half century of the series, and led a brief fight back in the company of Tillekaratne Dilshan.
The two put on 105 for the fifth wicket before pace bowler Ajit Agarkar provided the breakthrough when he had Jayawardene caught and bowled, off a near-yorker length delivery.
Dilshan was dismissed on 65 for the second time in the match, caught behind by Mahendra Dhoni off left-arm paceman Irfan Pathan.
India had resumed their second innings at 287-9 after heavy dew delayed the start of play by half an hour. They declared 20 minutes into the morning session.
The hosts' last wicket pair of Anil Kumble (29) and Harbhajan (40) put on another 29 runs to extend their stand to 69.
Sri Lanka have not won a test on Indian soil in five previous trips.
Debutant Asif takes two
Debutant Mohammad Asif took two wickets as England struggled to 206 for nine against Pakistan in the fifth and final one-day international yesterday.
Asif, 23, took the wickets of captain Marcus Trescothick (1) and Matthew Prior (9) in a spell of 7-1-14-2 after England choose to bat first on a slow turning pitch.
Vikram Solanki (49) and Andrew Flintoff (39) were the standout performers for England who lost five wickets for 45 runs in their last six overs.
Liam Plunkett boosted the score by hitting Abdul Razzaq for two fours and a six in the last three balls of the innings to remain unbeaten on 24 from 12 balls.
Pakistan, with an unassailable 3-1 lead in the series rested captain Inzamam-ul-Haq, Shoaib Akhtar and Mohammad Sami while England replaced the injured Kabir Ali and Ian Bell with Steve Harmison and Shaun Udal.