Indian off-spinner Ravichandran Ashwin took the wicket of centurion Angelo Mathews and managed to pull back the Sri Lankans as the visitors posted 270/4 at Delhi's Ferozeshah Kotla stadium in India on 4 December.
At the break, skipper Dinesh Chandimal was unbeaten on 98 with Sadeera Samarawickrama giving him company at his personal score of 4 not out as the visitors reduced the first innings deficit to 266 runs.
Earlier, Mathews and Chandimal kept the Indians at bay for most part of the second session, as the duo stitched a crucial 181-run fourth-wicket stand.
The partnership between Mathews and Chandimal came off 477 balls -- the most by any pair against India since the 738-ball stonewalling by Brendon McCullum and B.J. Watling in Wellington in February 2014.
Resuming the post-lunch session at 192/3, Mathews and Chandimal continued to frustrate the Indian bowlers with their resolute effort.
Mathews made the most of the two lifelines -- dropped on Sunday in single digits and then on Monday dropped at 98 by Rohit Sharma at second slip off Ishant Sharma -- to bring up his eighth Test ton in style.
Mathews' 268-ball marathon effort, consisting of 14 boundaries and two sixes, was, however, ended just at the stroke of tea when he edged one to keeper Wriddhiman Saha off Ashwin.
Chandimal, at the other end, continued to add pressure to the home bowlers as he neared his 10th Test ton with Samarawickrama in company.
Samarawickrama, the opening batsman, who was hit on the helmet grill on the opening day while fielding at short leg, came to bat at the unusual No.5.
Brief Scores: Sri Lanka 270/4 (Angelo Mathews 111, Dinesh Chandimal 98 batting; Ravichandran Ashwin 1/50) against India 536/7 dec.