The England pace attack ripped out Sri Lanka for just 91 after Jonny Bairstow made an excellent century to put the hosts in complete control of the first test on the second day in Leeds.
Bairstow's superb knock of 140 lifted England to 298 in their first innings before James Anderson and Stuart Broad took nine wickets between them in favourable conditions for seam bowling at Headingley.
England captain Alastair Cook enforced the follow-on and the touring side negotiated two deliveries to reach one for no wicket before bad light ended play.
Sri Lanka trail by 206 runs in the opening match of the three-test series.
England had resumed in the morning on 171 for five and Bairstow and Alex Hales extended their sixth-wicket partnership to 141. Hales, on 86, was in sight of his maiden test century when he skied spinner Rangana Herath to deep extra cover.
Moeen Ali (nought) and Broad (two) were dismissed by Dushmantha Chameera in the same over but Bairstow, dropped on 70, completed his second test hundred and celebrated the achievement enthusiastically on his home ground.
Bairstow found a solid partner in Steven Finn, the pair adding 56 for the ninth wicket before the former skied a catch to mid-on off Chameera.
Sri Lanka made a dreadful start to their reply as experienced fast bowlers Anderson and Broad exploited the conditions superbly.
Dimuth Karunaratne, Kaushal Silva and Kusal Mendis all edged catches to wicketkeeper Bairstow, leaving the tourists in deep trouble at 12 for three.
Dinesh Chandimal, on 15, was well held by James Vince at third slip off Ben Stokes before Anderson trapped captain Angelo Mathews lbw for 34 and then dismissed Dasun Shanaka first ball with a peach of a delivery that the batsman nicked to Bairstow.
The dismissal of Mathews was Anderson's 435th in tests, taking him past India's Kapil Dev into sixth place on the all-time list.
Herath was smartly caught by Stokes in the slips off Anderson for one, Chameera (2) drove Broad to Finn at mid-off and Lahiru Thirimanne, on 22, was caught by Finn at mid-on off Broad.
Anderson completed his 19th five-wicket haul in tests and outstanding figures of five for 16 when he had Shaminda Eranga caught by Bairstow down the leg-side.