The Yorkshire batsman fell five short of his first Test century earlier in the day, while Graeme Swann and Steve Finn provided resistance in the hosts’ tail-end, putting on a combined 32.
In South Africa’s second innings, Swann took the wicket of captain Graeme Smith, while Stuart Broad removed Alviro Petersen to get England off to a flying start.
But Hashim Amla and Jacques Kallis stood firm, producing a third-wicket stand of 81, before Finn gave England’s hopes of salvaging a draw a boost by taking the wicket of Kallis lbw before the end of play.
“We were toiling pretty hard all afternoon, so to come away with that important wicket near the end was fantastic,” said Bairstow.
“It’s pretty level. If we can get a few wickets early on and then get the full seven, we’ll be looking to chase down anything we’re set.”
Bairstow admitted he was disappointed to fall short of his maiden Test century but the 22-year-old was pleased with his performance overall.
“In some ways it’s quite lucky, in some ways not so lucky, that I’ve been in some situations like that with Yorkshire.
“So when you walk to the crease and you’re under the pump a little bit it’s something I quite enjoy.
“No qualms about it – it was obviously a very tough period of play that we had to try to see ourselves through.”
He added: “I was pleased with the way that I played. To get 95, I was delighted.”
“I was a bit disappointed not to get to the 100. Although it is only five runs, it would have been nice.”
MORE: The latest football news
MORE: The latest tennis news
BIOGRAPHY: Marcus Rashford