Indian bowlers picked up four wickets in the post lunch session on the fourth day to spoil Sri Lanka's hopes of saving the third and the final cricket Test here Saturday.
At tea, Sri Lanka were struggling at 144 for five in the second innings with skipper Kumar Sangakkara batting on an unbeaten 50.
Sri Lanka are still trailing by 189 runs and with five wickets in hand only a miracle can now help them to save the game at the Brabourne Stadium. India declared their first innings at 726 for nine in reply to Sri Lanka's 393.
Resuming at the overnight score of 11 without loss, and 322 runs behind, Sri Lanka lost five wickets, four in the second session, for just 133 runs as Indian bowlers tightened the noose around them. Barring opener Tharanga Pranavitana (54) and Sangakkara none of the Sri Lankan batsmen offered any resistance and had to blame themselves for the situation.
Zaheer Khan was the best of the lot, picking up two wickets while Sreesanth, Harbhajan Singh and Pragyan Ojha got a wicket apiece.
Sri Lankan openers Parnavitana and Tillekaratne Dilshan (16) adopted a cautious approach. But for the second time in the match, Dilshan fell to off-spinner Harbhajan Singh. Dilshan didn't offer a shot as the ball hit his pad and umpire Daryl Harper judged him out. TV replays showed the ball was missing leg stump.
Paranavitana (54) batted fluently Sangakkara for their 90-run partnership for the second wicket. But Sreesanth produced a brilliant late swinging delivery to get rid of Parnavitana triggering a mini collapse.
Mahela Jayawardene (12), Thilan Samarawera and Angelo Matthews (5) departed within a space of 25 runs denting Sri Lanka's chances of avoiding an innings defeat.
India lead the series 1-0 and a win here will propel them to the top spot in Test rankings. The historic Brabourne Stadium is hosting its first Test match in 36 years.