A career-best unbeaten 155 from Moeen Ali powered England to 498 declared before Sri Lanka were torn apart by Chris Woakes.
Moeen Ali took England to the brink of 500 runs with the second Test century of his career on day two of the three-match series against Sri Lanka, whose response once more immediately stuttered at the hands of Chris Woakes at Chester-le-Street.
The tourists impressed with a number of excellent catches on Friday as England reached stumps on 310-6, but their efforts on Saturday were in stark contrast as Moeen was dropped by Milinda Siriwardana en route to a career-best unbeaten 155.
England declared on 498 before tea, then set about making inroads into Sri Lanka's batting line-up.
Sri Lanka were all out for 91 and 119 in the crushing innings-and-88-run defeat at Headingley, and, just as he did by taking 10 wickets in Leeds, James Anderson (2-31) tore into the order by removing Dimuth Karunaratne (9) early on.
Woakes claimed three wickets at the cost of nine runs as the tourists closed the day at 91-8 and trailing by 407 runs.
It was not just Moeen who benefited from an early fielding error, with an outside edge from Woakes not held by Dinesh Chandimal as the pair took full advantage by building a 92 partnership.
Moeen brought up his 50 with a four through mid-off before Woakes (39) sent an edge back to Kusal Mendis, who was on hand again to assist Nuwan Pradeep (4-107) claim a fourth scalp of the match after Stuart Broad (7) nicked behind.
England went into lunch at 408-8, but Moeen ensured the runs continued to flow, punishing Siriwardana for a second drop by taking Shaminda Eranga (0-100) for successive boundaries off the next two balls.
The only high point for Sri Lanka came when Rangana Herath claimed his 300th Test wicket when he caught and bowled Steven Finn (10), but England captain Alastair Cook declared shortly after Mooen launched Lakmal over midwicket to break 150 with a maximum.
Anderson did not take long to claim his first wicket when he bowled around the legs of Karunaratne (9) and sent the off stump down and the tourists soon unravelled.
Angelo Mathews (3) was given caught behind following review as Woakes took centre stage, the all-rounder removing Mendis (35) and Siriwardana (0) in the same over to leave Sri Lanka six wickets down for just 67 runs.
They were unable to build any momentum, with Herath (12) and Eranga (2) caught at slip off Broad (3-35), the latter the result of excellent teamwork with Joe Root pouncing to catch after the ball squirmed away from James Vince.