India moved to the brink of a Test series sweep after a late bowling surge left Sri Lanka struggling at 229 for six at stumps on the fourth day of the second Test at the Sinhalese Sports Club Ground in Colombo.
Sri Lanka, who had been 199 for three at tea, lost three crucial wickets for just 20 runs in the final session as India regained control of the match. Heavy rain and bad light then forced an early close, leaving Sri Lanka with a 16-run overall lead and only four wickets remaining.
Earlier, Sri Lanka were bowled out for 290 in their first innings, with Sonal Dinusha producing a determined century, scoring 103. India had built a huge first-innings advantage of 213 runs after centuries from Dhruv Jurel, who remained unbeaten on 115, and Devdutt Padikkal, who made 117.
India captain Shubman Gill enforced the follow-on as his side pressed for a comprehensive victory.
Sri Lanka's second innings initially suffered early setbacks before Pasindu Sooriyabandara and Kamindu Mendis launched a strong counter-attack. The pair added 115 runs for the third wicket, taking on India's spinners and guiding Sri Lanka to 199 for three at tea.
India struck back in the final session through left-arm spinner Manav Suthar, who dismissed Sri Lankan captain Dhananjaya de Silva before removing Sooriyabandara for 92, just eight runs short of a maiden Test century.
Debutant Saransh Jain then trapped Niroshan Dickwella leg-before, completing a damaging spell for India as Sri Lanka slipped further into trouble.
With rain bringing an early end to play, Sri Lanka will resume on 229 for six on the final day, still holding only a narrow lead and facing an uphill battle to save the Test.