James Anderson took six wickets to help bowl Sri Lanka out for 381, but England's openers have failed again on the second day of the second and final test at Galle.
The tourists will resume the third morning on 98/2, with Joe Root scoring a breezy, unbeaten 67 and Jonny Bairstow on 24.
The pair have put on 93 for the third wicket at a rate of more than four runs per over to dig the tourists out of early strife.
Sri Lanka left-arm spinner Lasith Embuldeniya (2/33) quickly bagged the wickets of England openers Dom Sibley (0) and Zak Crawley (5), maintaining his dominance over the pair, after dismissing them in both innings of the first test.
Sibley was trapped leg before wicket and Crawley edged to first slip. The two have managed just 28 runs between them in six innings this series - a worry for the tourists, as they head to India for four tests after this match.
Bairstow and Root employed the sweep to excellent effect as a counter-attack measure, the latter also punishing Sri Lanka with the stroke in his first-test 228.
After electing to bate, England took 139.3 overs to finally dismiss the home side and Anderson was the chief wicket-taker, with 6/40 in 29 overs.
The Sri Lanka tail frustrated the tourists, adding 138 for the final four wickets.
Anderson removed centurion Angelo Mathews (110) early in the day, after a review by Root for a catch behind that nobody else seemed particularly interested in.
But any thoughts of a Sri Lanka collapse were ended by strong innings from Niroshan Dickwella (92) and Dilruwan Perera (67).
Left-hander Dickwella was denied a first test century, when he tried to launch a wider Anderson delivery over mid-off, but was caught in that position by a diving Jack Leach.
Fast bowler Mark Wood (3/84) was also among the wickets, as he ensured a test debut duck for Ramesh Mendis and induced an edge from Lasith Embuldeniya to Root at first slip.
Perera was the last man out, caught in the deep by Leach off Sam Curran. For the first time, all 10 wickets in an innings fell to seamers at Galle.
England won the first test at the same venue by seven wickets.