Opener Tharanga Paranavitana and captain Kumar Sangakkara put on an unbroken half-century partnership on Saturday as Sri Lanka sought to stave off defeat on day four of the third test.
The visitors reached 84-1 at lunch, still requiring a further 249 runs to make India bat again, and realistically hoping to last the remaining five sessions and force a draw.
Paranavitana was batting on 42 and Sangakkara was 22 not out after the fall of opener Tillakaratne Dilshan (16) as India pushed for a victory that would take it to the No. 1 spot in the world test rankings.
Resuming at the overnight score of 11-0, Sri Lanka lost Dilshan when he padded up to a delivery from offspinner Harbhajan Singh and was adjudged lbw.
Paranavitana, who struck seven boundaries, added 55 runs with Sangakkara for the second wicket.
Sri Lanka made 393 in its first innings, and India responded with its highest ever test score of 726-9 declared.
India leads 1-0 in the series, having won the second test by an innings and 144 runs.