Jonny Bairstow made a brilliant sixth Test century on his return to the England side but Lakshan Sandakan took four wickets as Sri Lanka fought back on day one in Colombo.
Bairstow was overlooked for the second match of the series after being ruled out of the opener due to an ankle injury, but grasped his opportunity at number three on Friday.
The 29-year-old played with the sort of fluency and assurance the tourist has been lacking at such a troublesome spot in the order, crafting a composed 110 before England closed on 312-7 as it eyes a 3-0 whitewash.
Bairstow put on 100 with Joe Root (46) for the third wicket and added 99 with Ben Stokes (57) for the fourth in good batting conditions.
SCORECARD AND BALL-BY-BALL DETAILS
Sandakan took 4-91 on a largely frustrating day for Sri Lanka, which paid the price for using up its reviews early on when Stokes should have gone leg before without scoring.
England lost both openers cheaply after Root won yet another toss, Rory Burns bowled attempting to cut Dilruwan Perera and Keaton Jennings caught by Roshen Silva at short leg off Malinda Pushpakumara.
Bairstow and Root steadied the ship, the Yorkshire duo playing the sweep with authority and latching onto anything short as they took England to 102 for two at lunch.
Captain Root – a centurion in the second Test – was not at his eye-catching best and threw his wicket away when he top-edged to Danushka Gunathilaka slog-sweeping Sandakan.
A sweep brought up a 76-ball half-century for Bairstow and Sri Lanka was left to rue a lack of reviews when Stokes was rapped on the pads in front by Dilruwan, umpire Chris Gaffney keeping his finger down when the ball would have struck middle stump.
Stokes looked uncertain at the start of his innings, but the runs started to flow for the all-rounder, who reverse-swept Sandakan for four and launched Dilruwan for a straight six.
Bairstow continued to tick along nicely and was unruffled when Sri Lanka thought he had been strangled caught behind down the leg side by Dilruwan.
Fine footwork allowed Stokes to superbly dispatch Dilruwan over the ropes for a second time before reaching his half-century from 78 balls and Bairstow swept the spinner for a couple to move into the 90s after England took tea on 197-3.
A dog stopped play with Bairstow on 98, but he was soon barking out a huge roar to celebrate reaching three figures with another sweep.
Sandakan ended a long stand when Stokes edged a sharply turning delivery to Dhananjaya de Silva at first slip and the same bowler cleaned up Bairstow soon after he should have been given lbw.
Moeen Ali was dropped by Niroshan Dickwella on two and put down by Dimuth Karunaratne after the all-rounder successfully reviewed an lbw decision in the same Dilruwan over.
Pushpakumara removed Ben Foakes late in the day and Moeen was still there on 23 at the close after overturning another leg before decision from Dilruwan with what proved to be the final ball of the day.
Latest on Sportstar
- MS Dhoni successfully undergoes knee surgery in Mumbai
- WTA moves San Jose tournament to Washington for combined event
- Norway Chess: Gukesh surrenders to Nakamura; Caruana in lead
- Canada’s Oleksiak to miss July World Championships with injury
- Swiatek defeats Liu, reaches French Open third round