Adil Rashid and Ben Stokes scripted a spectacular turnaround to earn England a handy first-innings lead after skittling out Sri Lanka for 240 on day two of the third and final test on Saturday.
Cruising at 173 for one at one stage, Sri Lanka had every reason to be optimistic about a big first-innings total before the wheels came off their innings in the final session at the Sinhalese Sports Club.
Rashid claimed a career-best 5-49, also effecting a run-out with a direct throw, while Stokes returned 3-30 in a lion-hearted display of pace bowling on a spin-friendly track to earn England a first-innings lead of 96.
The tourists were three for no loss in their second innings when bad light stopped play.
Rory Burns was on two and Keaton Jennings on one with England pressing for a 3-0 series sweep.
On a day when England captain Joe Root spilled two catches in the slip, Jennings pouched four at short leg, three of them absolute blinders.
Ben Foakes took three behind stumps, including a brilliant diving catch to send back Angelo Mathews.
Earlier, England lost their last three wickets in less than 30 minutes to be all out for 336 in their first innings.
Sri Lanka made a cautious reply and Jennings took a stunning catch to eventually end the opening stand.
Danushka Gunathilaka (18) stepped out to hit a Jack Leach delivery and Jennings followed him to be in position to take a bat-pad catch after the ball hit his midriff.
Dimuth Karunaratne (83) then forged a 142-run partnership with Dhananjaya de Silva (73) to lead a strong reply by the hosts.
Both batsmen were lucky to bring up their fifties, each spilled by Root at slip with Stuart Broad the luckless bowler on both occasions.
Once again, Jennings took a smart catch to end Sri Lanka's highest partnership of the series when de Silva flicked a Rashid ball towards him.
The same Rashid-Jennings pair combined again to send back Karunaratne and Sri Lanka simply imploded after that, losing eight wickets in the final session.
On a pitch where no other quick bowler has managed a wicket in the contest, Stokes generated awkward bounce to trouble the batsmen and was rewarded for his never-say-die attitude.
Dimuth and Dananjaya shared 142 runs for the second wicket but a disappointing middle order collapse put England on top
England 1st innings
Rory Burns b Dilruwan Perera 14
Keaton Jennings c Roshen Silva b Malinda Pushpakumara 13
Jonny Bairstow b Lakshan Sandakan 110
Joe Root c Danushka Gunathilaka b Lakshan Sandakan 46
Ben Stokes c Dhananjaya de Silva b Lakshan Sandakan 57
Jos Buttler c&b Lakshan Sandakan 16
Moeen Ali c Angelo Mathews b Dilruwan Perera 33
Ben Foakes c Niroshan Dickwella b Malinda Pushpakumara 13
Adil Rashid Not Out 21
Stuart Broad b Lakshan Sandakan 0
Jack Leach c Angelo Mathews b Dilruwan Perera 2
Extras 7b 3lb 1nb 0pen 0w 11
Total (92.5 overs, all out) 336
Fall of Wickets : 1-22 Burns, 2-36 Jennings, 3-136 Root, 4-235 Stokes, 5-254 Bairstow, 6-265 Buttler, 7-294 Foakes, 8-328 Ali, 9-329 Broad, 10-336 Leach
Bowling: Lakmal 11-2-33-0, Perera 32.5-1-113-3, Pushpakumara 20-3-64-2, Sandakan 22-0-95-5, de Silva 5-0-16-0, Gunathilaka 2-0-5-0
Sri Lanka 1st innings
Danushka Gunathilaka c Keaton Jennings b Jack Leach 18
Dimuth Karunaratne c Keaton Jennings b Adil Rashid 83
Dhananjaya de Silva c Keaton Jennings b Adil Rashid 73
Kusal Mendis c Ben Stokes b Adil Rashid 27
Angelo Mathews c Ben Foakes b Ben Stokes 5
Roshen Silva c Keaton Jennings b Adil Rashid 3
Niroshan Dickwella c Ben Foakes b Ben Stokes 5
Dilruwan Perera c Ben Foakes b Ben Stokes 0
Suranga Lakmal Not Out 3
Lakshan Sandakan Run Out Adil Rashid 2
Malinda Pushpakumara lbw Adil Rashid 13
Extras (0b 7lb 0nb 0pen 1w) 8
Total (65.5 overs, all out) 240
Fall of Wickets : 1-31 Gunathilaka, 2-173 de Silva, 3-187 Karunaratne, 4-200 Mathews, 5-205 Silva, 6-222 Dickwella, 7-222 Mendis, 8-222 Perera, 9-224 Sandakan, 10-240 Pushpakumara
Bowling: Broad 9-2-36-0, Leach 18-2-59-1, Ali 13-2-55-0, Rashid 13.5-2-49-5, Root 2-0-4-0, Stokes 10-1-30-3
England 2nd innings
Rory Burns Not Out 2
Keaton Jennings Not Out 1
Extras (0b 0lb 0nb 0pen 0w) 0
Total (4.0 overs, no wickets) 3
Bowling: Perera 2-1-1-0, Pushpakumara 1-0-2-0, de Silva 1-1-0-0