Sri Lanka 211 for 5 (Dhananjaya 64*, Nissanka 64, Kamindu 54*) trail England 325 (Pope 154, Duckett 86, Rathnayake 3-56, Dhananjaya 2-18) by 114 runs
Dhananjaya de Silva and Kamindu Mendis rebuilt Sri Lanka on a see-sawing second day that closed early due to bad light yet again, but this time the tourists could claim the better of the contest.
After their bowlers had staged a remarkable turnaround to bundle England out for 325 from their overnight 221 for 3, Sri Lanka slumped to 93 for 5 before Dhananjaya and Kamindu staged an unbroken stand worth 118 for the sixth wicket to close the deficit.
There was still plenty of work to be done when the players left the field at 5.36pm with the prospect of returning equally as dim as the overhead conditions at The Oval, and stumps were indeed called half an hour later without any further play.
Dhananjaya returned from tea on 16 but by the close he had passed Kamindu to be 64 not out. That was after being dropped on 23 by debutant Josh Hull, who let a straightforward catch off the bowling of Shoaib Bashir slip through his hands and into his chest at mid-on.
Hull's desire to disappear was as palpable as his relief upon claiming his maiden Test wicket, the dangerous-looking Pathum Nissanka for a quick-fire 64 via Chris Woakes' catch at cover.
That was part of England's dismantling of their opponents' good work during an eventful afternoon session in which Olly Stone snared two wickets and Woakes chimed in with one after Nissanka's errant call and Stone's direct hit from short cover had run out Dimuth Karunaratne.
In bizarre scenes, Woakes was forced to send down four offspin deliveries when the umpires ruled the light to be too poor for the seamers midway through his fourth over.
As the skies brightened in the very next over and Gus Atkinson was allowed to bowl off his full run, so too Woakes returned to his stock in trade, and in his sixth over he had Kusal Mendis taken by Harry Brook at second slip.
Stone struck with his fourth delivery, Angelo Mathews caught by Ollie Pope at gully, and after Hull had removed Nissanka, Stone pinned Dinesh Chandimal lbw to leave Sri Lanka in deep trouble.
Kamindu brought up Sri Lanka's 100 with the first of three gorgeous drives in one Stone over and by tea he was unbeaten on 34.
Due to bad light, England had to bowl spin for the duration of the evening session, 17 overs in which Dhananjaya and Kamindu added 69 runs.
Earlier, Sri Lanka's bowlers responded to fast-bowling coach Aaqib Javed's call at stumps on the first evening to "rest and come up with something better than this".
England were fallible in a collapse of 6 for 35 in 56 balls, with poor shot-selection and too often falling into the traps Sri Lanka's bowlers set for them, but it was an undeniably improved performance from the visitors as their bowlers employed greater patience and probing lines while making the ball swing.
Pope pushed his dazzling first-day score of 103 not out to 154 but apart from him and Ben Duckett, no England batter reached 20.
Brook looked streaky when he resumed on 8, particularly against anything wide of off stump, and he had added just four more runs before skying Milan Rathnayake to deep point, where Asitha Fernando had eons to wait underneath it before inexplicably putting it down.
So annoyed was Brook by Sri Lanka's nagging fifth- and sixth-stump line that at one point he took up his stance a foot outside off stump and gesticulated with outstretched arms that seemed to question their tactic. The answer came soon enough when his frustration appeared to boil over into a slash at Rathnayake's outswinger and Kamindu made no mistake with the sharpest of catches diving to his right at short cover.
Vishwa Fernando entered the attack after about an hour and had Pope given out lbw on 139, roaring "ah yes!" in celebration. Pope reviewed, somewhat speculatively, and managed to overturn his dismissal when the ball was shown to have pitched so narrowly outside leg stump Pope probably couldn't believe it himself.
With all the luck heading his way, Pope got an inside edge onto the penultimate ball of the over and it was Vishwa who could scarcely comprehend when the ball missed the top of leg stump by a whisker and raced to the boundary.
Vishwa had genuine cause to celebrate a short time later though, his first wicket of the match finally coming in the form of Jamie Smith's flick straight to midwicket.
Captain Dhananjaya brought himself on and removed Woakes and Atkinson cheaply with his offspin and while Pope had brought up his 150 in just 151 balls, it was Vishwa who ended his wonderful knock with a short ball hooked to deep square leg.
Pope's dismissal brought Hull to the crease but his stay was short-lived after Asitha had him caught at square leg for just 2 and Bashir was the last man out, spooning Rathnayake to mid-off for 1.