England moved into a commanding position on day two of the first Investec Test at Headingley after bowling Sri Lanka out for 91, a first innings lead of 207, and enforcing the follow on.
James Anderson was the pick of the England bowlers on Friday, taking 5-16, as he moved up to sixth on the list of all-time Test wicket-takers with 438, with Stuart Broad claiming 4-21.
Jonny Bairstow had earlier reached his second Test century before he was eventually dismissed for 140 after helping England post 298 in their first innings.
Having put on 141 with Alex Hales (86), Bairstow shared a stand of 56 for the ninth wicket with Steven Finn (17) before the bowlers took charge in the evening session.
Resuming on 171-5, England moved past 200 in the first hour. Bairstow - 54 not out overnight - continued scoring at a decent rate and soon overtook Hales who was finding scoring difficult. Both players were given a life with Nuwan Pradeep putting down a return catch with Bairstow on 70 and Hales dropped at second slip having made 82.
The opener was gone soon after as he came down the track to Rangana Herath and skewed the ball to Dushmantha Chameera running in from deep cover, 14 short of a maiden Test century.
Chameera himself then quickly removed Moeen Ali (0) and Broad (2) but Bairstow remained and an overthrow saw him go to his first Test century on home soil as England reached lunch at 243-8.
Bairstow upped the tempo again after the interval and had taken England up to 289 before hauling out to long on, to hand Chameera his third wicket. Finn was the final wicket to fall, stumped off Herath.
England's seamers then took centre stage, with Anderson and Broad taking out the Sri Lanka top three in quick succession to leave the tourists 12-3 inside six overs. All three wickets were caught behind, Broad nicking out Dimuth Karunaratne and Kusal Mendis with Anderson removing Kaushal Silva in between.
Dinesh Chandimal and Angelo Mathews saw Sri Lanka to 43-3 at tea but the former was gone with the first ball after the restart, James Vince diving to his right to take the catch at third slip and give Ben Stokes his first wicket.
Bad light briefly stopped play and Mathews (34) and Lahiru Thirimanne held firm to frustrate England for a while but when Anderson trapped the former lbw, the floodgates were opened and wickets came at regular intervals.
Anderson had Dasun Shanaka caught behind first ball and although Herath survived the hat-trick ball, the England swing bowler got rid of him before long - Stokes taking the catch at fourth slip.
Broad was then back into the action having Chameera and Thirimanne caught by Finn before Anderson took the final wicket, Shaminda Eranga caught down the legside by Bairstow.
Alastair Cook enforced the follow on but after just two balls of Sri Lanka's second innings, and the score at 1-0, bad light brought an end to the day's proceedings with England in complete control.
Watch live coverage from day three of the first Test between England and Sri Lanka at Headingley, live on Sky Sports 2 from 10.30am on Saturday. You can also catch highlights from day two at 8pm on Sky Sports 5, with The Verdict following immediately after at 9pm.