But the debate about whether he should continue to keep wicket for England intensified when he dropped a routine catch to reprieve Dimuth Karunaratne on the second day of the third Test.
At stumps, Sri Lanka were 162 for one in reply to England’s first innings 416, a deficit of 254 runs.
Kaushal Silva was 79 not out and Kusal Mendis unbeaten on 25 after left-handed opener Karunaratne made exactly 50.
Considering the start of this series saw Sri Lanka become the first side since 1958 to be dismissed for under 120 in three successive Test innings, this was a fine effort, albeit a placid pitch and lack of swing meant conditions at the “home of cricket” favoured batsmen on Friday.
There had been signs of recovery in their last innings, where Sri Lanka made 475 in a nine-wicket defeat in the second Test, giving England an unassailable 2-0 lead in this three-match series.
Karunaratne should have been out for 28 on Friday when he nicked all-rounder Chris Woakes, only for Bairstow to drop the two-handed waist-high chance.
Even allowing for the possibility that Bairstow was mentally and physically tired after his more than six-hour innings, it was still an extraordinary miss by a Test keeper.
It is not the first time this series that Bairstow has grassed a chance — although Friday’s miss was the most glaring.
Karunaratne cashed in and after tea struck James Anderson, the world’s number one ranked Test bowler, for three fours in as many balls, including a well-hit drive.
Yet having completed a 95-ball fifty, Karunaratne was dismissed when a leg glance was well caught by a diving Bairstow to give under-pressure fast bowler Steven Finn a wicket on his Middlesex home ground.
Karunaratne’s exit ended an opening stand of 108 with Silva — easily Sri Lanka’s best top-order partnership of the series.
Silva took Sri Lanka to 150 with a sublime drive through extra-cover for four off Stuart Broad.
“That innings at Durham helped us a lot in terms of our confidence,” Silva told Sky Sports after Friday’s close.
“We just had to get into our system that we can do things. When the sun is out and the ball doesn’t swing much, it’s easier for us,” he added.
“But still we have to play really well to score runs — they (England) have a quality attack.”
Meanwhile Woakes admitted: “Getting 19 wickets after today is going to be tough.
“But that’s Test cricket. The Sri Lankans batted well.”
Bairstow, who was himself dropped on 11 when Shaminda Eranga floored a routine catch at mid-wicket, said after Thursday’s opening day: “It’s not my fault he dropped it. That’s the nature of cricket.
“Unfortunately, he put that one down and I was able to take advantage.”
Bairstow, as if forecasting his own error in dropping Karunaratne, although in reality making a statement of fact, added: “There are going to be more chances put down.”
It wasn’t until January that the 26-year-old Bairstow scored his first Test century. But since January 1, he has been in prolific batting form for both county champions Yorkshire and England, scoring 594 runs at an average of 118.8 in Tests and 1,127 runs in first-class cricket at 102.4.
Friday saw Bairstow receive good support from Woakes (66) in a seventh-wicket partnership of 144.
Meanwhile, Sri Lanka left-arm spinner Rangana Herath took an economical four for 81 in 36 overs.
England resumed on 279 for six with Bairstow 107 not out and Woakes unbeaten on 23. Bairstow’s second century of the series, following his 140 on his Headingley home ground in the first Test, helped rescue England from the depths of 84 for four.
Woakes was the initial aggressor on Friday and a boundary off Eranga saw him to a maiden Test fifty in 102 balls.
But Woakes fell when caught and bowled by Herath off a chipped drive.
Bairstow batted on and his leg-glanced four off Sri Lanka captain Angelo Mathews saw him surpass his previous Test-best 150 not out against South Africa at Cape Town in January.