Brilliant fielding by Ben Stokes enabled England to end a key stand between Dimuth Karunaratne and Dhananjaya de Silva as Sri Lanka reached 139 for 4 at lunch in the second Test on Thursday.
Karunaratne, who made 63, put on 96 for the third wicket with De Silva to steady the innings after they slipped to 31 for two early on the second day in Kandy.
But Stokes, who on Wednesday had failed with the bat as England's new number three, broke the partnership when he pounced to run out Karunaratne with a direct throw from gully.
The star all-rounder then took a stunning one-handed catch low to his left at first slip to dismiss Kusal Mendis for one off the slow left-arm spin of Jack Leach.
De Silva was not out 57 at lunch with Angelo Mathews on two as Sri Lanka trail by 146 in response to the tourists' first innings 285.
Karunaratne, who started the day on 19, lost partner and nightwatchman Malinda Pushpakumara for four but then played a patient knock to register his 18th Test fifty.
Moeen Ali wasted little time in removing Pushpakumara in the third over of the day as fellow spinners Leach and Adil Rashid also heaped pressure on the Sri Lankan batsmen.
De Silva kept his calm after losing Karunaratne and raised his fifty with a boundary off Stokes.
On Wednesday's first day, first Jos Buttler with 63 and then some lusty hitting from Sam Curran who bludgeoned 64 lifted England to a competitive 285 all out after being in trouble at 89 for 4 and then 171 for 7 after winning the toss and electing to bat.