England 290 (Curran 64, Buttler 63, Dilruwan 4-61) and 0 for 0 trail Sri Lanka 336 (Silva 85, Karunaratne 63, de Silva 59, Leach 3-70, Rashid 3-76) by 46 runs
Kandy: Roshen Silva hit a resolute 85 to frustrate England and give Sri Lanka a lead of 46 on day two of an evenly poised second Test in Pallekele.
Resuming on 26-1, Dimuth Karunaratne and Dhananjaya de Silva made half-centuries before England reduced the hosts to 165-6 shortly after lunch.
But Roshen negated England's spinners and forged four defiant lower-order partnerships to take Sri Lanka to 336.
Nightwatchman Jack Leach played out the last over as England closed on 0-0.
The tourists were awarded five penalty runs during Sri Lanka's innings after Roshen deliberately ran short. The runs were added to their first-innings total of 285.
On a testing pitch that is still producing sharp turn, England will have to bat with the concentration and determination Sri Lanka showed to post a challenging fourth-innings target.
England lead the three-match series 1-0 and are looking for their first away series win under captain Joe Root.