Wicketkeeper-batsman Niroshan Dickwella helped Sri Lanka fight back after early wickets including overnight partner Angelo Mathews on day two of the second Test on Saturday.
Sri Lanka reached 313 for six at lunch after starting the day on 229-4 in Galle. Dickwella, on 78, and Dilruwan Perera, on 21, were at the crease.Pace spearhead James Anderson struck in his first over of the day to send Mathews caught behind for 110 after the former captain added just three runs in the morning. Anderson has claimed four wickets to take his Test tally to 604.
But the dismissal was skipper Joe Root's mastermind after he reviewed the umpires call, which was not out, and replays suggested the ball had grazed Mathews' bat.
Fast bowler Mark Wood sent debutant Ramesh Mendis trudging back to the pavilion for nought with wicketkeeper Jos Buttler taking a one-handed diving catch towards his left.
Dickwella, resuming on his overnight 19, kept up the grind with Perera as the left-right batting pair put on 70 runs for the seventh wicket after the hosts had elected to bat first.
Dickwella reached his 16th Test fifty with a single off spinner Dom Bess and then took on the spinners with a few boundaries.
Earlier Mathews reached his 11th Test century on Friday to rebuild the Sri Lankan innings after Anderson had struck three early blows on the opening day.England lead the two-Test series, which is being played behind closed doors.