Jonny Bairstow
Bairstow made a career-best 167 but will be ruing the dropped catch with undid his good work. Getty Images

Jonny Barstow struck the highest score by an England wicket-keeper on home soil – but the Yorkshireman's feat was overshadowed by dropping Dimuth Karunaratne as Sri Lanka frustrated the hosts on day two of the second Test at Lord's. Bairstow finished unbeaten on 167 – six runs short of Alex Stewart's all-time record – but failure to grasp an edge from Chris Woakes' first ball meant Alastair Cook's team were unable to make significant inroads.

Woakes (66) and Barstow worked in tandem successfully earlier in the day, both making their highest Test scores to help steer England to 416 all out – with Rangana Herath taking four wickets. Despite the flat surface at the home of cricket, Sri Lankan supporters could have been forgiven for fearing the worst with England's tails up, but they were to be pleasantly surprised.

The tourists were 49 for no loss through 11 overs in what was already their most assured batting display of a harrowing series, when Woakes found the edge of Karunaratne – then on 26 – but Bairstow failed to grasp the opportunity as the ball rebounded off his thigh. Whether the Lord's slope played a part or not, one drop saw Barstow go from from his third century in eight innings to being questioned over his dual role in the team.

Sri Lanka strolled to 108 before Karunaratne (50) did eventually go as Bairstow clung on to an edge down the leg side off Steven Finn. The first two Test matches had suggested the breakthrough would open the floodgates, but the away side produced a stubborn resistance with Kaushal Silva (79 not out) and Kusal Mendis (25 not out) putting on 54 to close on 162 for 1 and keep England, who lead the three-game series 2-0, at bay.