England paceman James Anderson returned his best figures of 6-40 in Asia to help bowl out Sri Lanka for 381 on day two of the second Test on Saturday.
The tourists were 98 for two at stumps after Lasith Embuldeniya struck early to remove the openers. Skipper Joe Root, on 67, and Jonny Bairstow, on 24, were batting as England trail by 283 runs in Galle.
Anderson, 38, denied wicketkeeper-batsman Niroshan Dickwella a century after sending him back on 92 to claim his 30th five-wicket haul and second in Sri Lanka -- his previous best was 5-75 in Galle in 2012.
Anderson, who replaced Stuart Broad in the team for this Test, bowled 29 overs with 13 maidens before Sri Lanka were bowled out in an extended second session with Dilruwan Perera scoring a defiant 67.
The pace spearhead struck in his first over of the day to send Angelo Mathews caught behind for 110 after the former captain added just three runs in the morning.
But the dismissal was skipper Joe Root's mastermind after he reviewed the umpire's 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 made the team fight back with his 16th Test fifty as he put together a 89-run seventh-wicket stand with Perera.
Perera also dug in after Dickwella's wicket and scored his seventh Test half-century to frustrate the England bowlers before falling to Sam Curran.
All the 10 wickets went to the pacemen with Wood taking three scalps.
But it was spin in the final session with left-arm orthodox Embuldeniya sending back Dom Sibley, for nought, and Zak Crawley, for five, in quick succession.
Root and Bairstow got together to thwart the Sri Lankan attack as they put on an unbroken 93-run stand till close of play.
Root, who hit 228 in his team's opening win last week, recorded his 50th half-century in his 99th match.
The series, which is being played behind closed doors, resumed after being cancelled in March 2020 due to the coronavirus pandemic.