The tourists are now only 237 ahead with six wickets in hand.
Sourav Ganguly and Venkatsai Laxman had yet to open their accounts when bad light stopped play.
India appeared to have seized the initiative after attacking knocks from Gautam Gambhir (74), Virender Sehwag (50), Rahul Dravid (44) and Sachin Tendulkar (31) before losing their way.
"We are in a better position at the moment and need to look at one good partnership tomorrow and try to win the Test," said Gambhir.
"I think anything above 350 will be a difficult target to chase. It is not an easy wicket to bat on and it is deteriorating. Harbhajan (Singh) and Anil (Kumble) will not be easy to play."
Sri Lanka were bowled out for 292 in their first innings on the stroke of lunch in reply to India's 329, with skipper Mahela Jayawardene top-scoring wi