England found themselves on the back foot after day two of the second Test against Sri Lanka, 46 runs behind and facing the prospect of a nerve-racking second innings in Kandy.

The tourists arrived at Pallekele Stadium confident their score of 285 – later ugraded to 290 after umpire Marais Erasmus officiously awarded five penalty runs – would be enough to control proceedings on a turning pitch, only for Sri Lanka to respond with a gutsy total of 336.

Roshen Silva’s composed 85 – the top score of the match to date – was smartly compiled with the tail for company, and there were half-centuries from Dimuth Karunaratne (63) and Dhananjaya de Silva (59). Nightwatchman Jack Leach was sent in to protect Keaton Jennings for a solitary over before stumps and safely averted further tension.

England’s spinners took wickets on a friendly surface, Leach and Adil Rashid finising with three apiece, with two for an off-key Moeen Ali and one for part-timer Joe Root.

But on a helpful track they managed a slow and steady stream of breakthroughs rather than the kind of concentrated mischief that wins Test matches in the sub-continent. There was rarely, if ever, concerted pressure from both ends at once.

When Angelo Mathews departed at 165 for six, Sri Lanka were still prone, but Roshen’s clear-minded batsmanship and some weary, lacklustre bowling – particularly after the arrival of the second new ball – allowed them to more than double their tally.

Roshen deserves particular praise for refusing to be ruffled by Erasmus’ decision to step in during the 86th over, when he failed to ground his bat while running a two. He appeared to think his shot was heading for the third-man boundary and was under no pressure as he jogged back, but was nevertheless judged by the umpire to have acted deliberately – costing his side five runs.

Ben Stokes’ fielding had taken centre stage in the morning session, producing a brilliant run out and an outstanding catch to kickstart the English effort.

After Moeen accounted for nightwatchman Malinda Pushpakumara early on, Karunaratne and De Silva calmly put together the biggest stand of the match – 96 in 146 deliveries – and seemed on course for a lengthy stay at the crease.

That was when Stokes summoned his uncanny ability to bend the game to his will. He pounced from gully as soon as De Silva set off for a quick single, gathering the ball and releasing a precise throw that clipped the only stump he had sight of to leave Karunaratne a couple of inches short.

Comparisons are never entirely becoming at such times but for a moment it was hard not to recall the opportunistic, spotlight-claiming chutzpah of Andrew Flintoff.

Stokes’ next intervention, just seven balls later off the bowling of Leach, was equally jaw-dropping, showcasing lightning fast reactions and rock solid handling skills to snatch the sharpest of one-handed slip catches off Kusal Mendis’ edge.

The scoreboard at lunch read 139 for four, and the 27-year-old all-rounder single-handedly – literally – turned a troubling session into something more promising.

The afternoon session was a more even affair, containing three wickets and 105 runs. Rashid had been subdued in the morning but repaid the decision to hand him a long spell immediately after the break, taking a pair of important scalps with ripping leg-breaks. Both De Silva (59) and the dangerous Mathews were undone, with wicketkeeper Ben Foakes on hand to catch the nicks.

That left Roshen, deputising for injured captain Dinesh Chandimal, to take up the baton. He exceeded all expectations, leading stands of 46, 41 and 56 with Niroshan Dickwella, Dilruwan Perera and Akila Dananjaya.

Root watched on as the tail gradually eroded his anticipated lead, then achieved parity and finally built a healthy one of their own in a flat final session for the visitors.