Sri Lanka duo Dhananjaya de Silva and Kamindu Mendis frustrated England's bowling attack to ensure the tourists finished day two of the final Test on 211-5.
England resumed on 221-3 after bad light limited Friday's play, with Ollie Pope having reached his seventh Test century shortly before stumps.
The hosts enjoyed a major reprieve early in the morning session, with Harry Brook inexplicably dropped on 12 by Asitha Fernando after skewing Milan Rathnayake's ball horribly.
Brook's luck soon ran out as Kamindu took a stunning catch off his drive, but Pope was more fortunate to survive an lbw review after appearing to have been trapped for 139 by Vishwa Fernando's delivery.
Pope made it to 154 before being caught in the deep by Dimuth Karunaratne, Sri Lanka's second wicket in three balls, as they went on to make light work of the England tail.
Olly Stone was the pick of England's bowlers, taking 2-28 after first running out Sri Lanka opener Dimuth Karunaratne, while Chris Woakes dismissed Kusal Mendis before debutant Josh Hull took his first Test wicket, ending Pathum Nissanka's brilliant knock of 64, with Woakes taking a fantastic catch at cover.
Yet Hull dropped a gilt-edged chance to send Dhananjaya packing, and the Sri Lanka captain took full advantage, moving onto 64, with Kamindu on 54 at the other end, by the time bad light stopped play with the tourists trailing by 114.
Data Debrief: Kamindu England's bogeyman
Kamindu's tally has come from just 70 deliveries, at a strike rate of 77.14. He has scored 70+ in two of his last three Test innings against England, and he is well on course to make that three from four.
England stuttered in the field after an excellent start to defending their lead, though the hosts should still be confident. After all, they are undefeated in their last eight Tests at home (W7 D1).