Kandy, Sri Lanka: England spinner Jack Leach claimed three early wickets to peg back Sri Lanka who were chasing a daunting 301 on the fourth day of the second Test on Saturday.
The hosts were 93 for three at lunch, still needing 208 runs to win the game after having bowled out England for 346 in their second innings.
Leach, 27, shared the new ball with paceman James Anderson to rattle the Sri Lankan top-order with his left-arm orthodox spin on a turning Kandy pitch.
But opener Dimuth Karunaratne, batting on 54, held firm to keep alive Sri Lanka's chances of levelling the three-match series after the tourists won the opening game in Galle.
Angelo Mathews (28) was batting alongside Karunaratne who scored his second fifty of the match.
Karunaratne, who made 63 in Sri Lanka's first innings of 336, put on an unbeaten 67-run fourth wicket stand with Mathews after the islanders had slipped to 26-3.
Leach got opener Kaushal Silva stumped for four and soon sent Dhananjaya de Silva trudging back to the pavilion for one.
It was a successful review by the Joe Root-led England that got Kusal Mendis out for one after Leach's lbw appeal was turned down by the on-field umpire.
England, who had resumed the day on 324-9, stretched their second innings lead to 300 with overnight batsman Ben Foakes hitting an unbeaten 65.
Foakes, who hit a ton on debut in Galle, added 14 to his overnight 51 and shared 41 runs for the last wicket with Anderson (12).
Root's 124 remained the highlight for England who overcame their 46-run deficit and took the attack to the opposition spinners on Friday.
Akila Dananjaya, whose action is under investigation by the International Cricket Council, finished with career-best figures of 6-115 in just his fifth Test.