James Anderson and Joe Root kept England in contention on day two of the second Test against Sri Lanka in Galle.
Anderson took 6-40 from 29 overs - his 30th Test five-wicket haul - as England bowled their hosts out for 381.
He dismissed Angelo Mathews for 110 but Sri Lanka eked out a good score from 243-6, Niroshan Dickwella making 92 and Dilruwan Perera 67.
England fell to 5-2 in reply before Root's enterprising 67 not out from 77 balls led England to 98-2 at the close.
He put on 93 with Jonny Bairstow, who is 24 not out, to steady England after openers Dom Sibley (0) and Zak Crawley (5) both fell, once again, to left-arm spinner Lasith Embuldeniya.
Embuldeniya took two wickets in his first 19 balls after England's spinners had earlier bowled 64 wicketless overs.
Mark Wood took 3-84 in support of the 38-year-old Anderson, who became the oldest fast bowler to take a five-wicket haul in Asia.