Joe Root made a brilliant attacking century to give England a substantial lead despite Akila Dananjaya's six-wicket haul on day three of the second Test against Sri Lanka in Pallekele.
Root went on the attack to give the tourists a great chance of winning the series with a match to spare, the captain scoring a masterful 124 from only 146 balls.
Rory Burns (59) hit a maiden Test half-century and Ben Foakes continued his dream start to his England career with an unbeaten 51 on a pitch offering plenty of turn on Friday.
Dananjaya, reported for a suspect bowling action in the first Test, took Test-best figures of 6-106 but England were 324-9 with a lead of 278 when play was cut short due to bad light before the rain came.
Joe Leach succeeded with his task of seeing out one over as nightwatchman on day two, but failed to hang around in the morning session, Dilruwan Perera (2-87) trapping him leg before sweeping.
Keaton Jennings (26) and Burns moved England into a lead of 31 with a positive second-wicket stand of 73 before the former was caught at slip reverse-sweeping Dananjaya.
Burns did not allow the Sri Lanka bowlers to settle, striking the ball with power and running superbly between the wickets in a promising knock which included seven boundaries before Malinda Pushpakumara snared him lbw.
England were 109-4 when Perera pinned Ben Stokes leg before without scoring, but Root looked in great touch from the start of his innings and put on 74 for the fifth wicket with Jos Buttler.
Buttler (34) played on attempting to reverse sweep Dananjaya, but Root continued to use his feet expertly, finding the boundary with apparent ease as he took on the spinners.
Root shifted through the gears after bringing up his half-century, Sri Lanka unable to contain the skipper, who continued to charge down the track, smashing Perera for six over midwicket before Moeen Ali departed cheaply.
The magnificent Root moved into the 90s by launching Dananjaya over the ropes and let out a roar after bringing up his 15th Test hundred by steering Suranga Lakmal to the third-man boundary just after tea.
Root was also undone sweeping Dananjaya, but the impressive Foakes had a half-century when he swatted Perera over the ropes after Dananjaya bowled Sam Curran first ball with a beauty and then removed Adil Rashid.
Deteriorating light and a subsequent downpour brought a premature halt to what was England's day, Foakes still there brimming with confidence following his debut hundred in Galle.