Hashim Amla's unbeaten fifty steadied South Africa as England pressed with both bat and ball on the third day of the third Test at Lord's on Saturday.
At stumps, the Proteas were 145 for three in their second innings -- a lead of 139 - with Amla 57 not out and nightwatchman Dale Steyn nought not out.
South Africa, 1-0 up in the three-match series, only have to avoid defeat to replace England as the world's top-ranked Test side.
Both teams had slumped to 54 for four in their first innings and South Africa were wobbling at 50 for two second time around before Amla, dropped on two, and Jacques Kallis (31) shared a third-wicket partnership of 81.
South Africa lost their first wicket when captain Graeme Smith, who'd made hundreds in his two previous Lord's Tests, missed a sweep against off-spinner Graeme Swann and was lbw for 23.
Amla was fortunate when he glanced Stuart Broad down the legside and diving wicket-keeper Matt Prior just failed to cling on to the left-handed chance.
But two balls later, Broad had opener Alviro Petersen, playing across the line of a full delivery, lbw for 24.
Both Amla and Kallis initially struggled against the short ball before Kallis lofted Broad over gully for four.
However, Kallis was lbw to fast bowler Steven Finn, with Australian umpire Simon Taufel's decision upheld on review -- much to the batsman's displeasure.
Amla though drove Broad down the ground to complete a 95-ball fifty with his seventh four and, two balls later, elegantly stroked him through extra-cover.
Earlier, Jonathan Bairstow fell just short of a maiden Test hundred as England made 315 in reply to South Africa's first innings 309.
But the recalled Bairstow had the consolation of posting a Test-best 95 after coming in when England had collapsed to 54 for four.
There was extra pressure on the 22-year-old as he'd replaced Kevin Pietersen, dropped despite scoring 149 in the drawn second Test at Headingley.
England axed South Africa-born Pietersen for sending "provocative" texts, believed to include criticisms of captain Andrew Strauss, to Proteas players.
Bairstow only made his Test debut in May, at Lord's, but was dropped after his first three matches at this level, all against the West Indies, yielded a mere 38 runs in total as he struggled against the short ball.
"When you get exploited in some sort of way, you look at things," said Bairstow. "I worked with (Yorkshire coach) Martyn Moxon and (England batting coach) Graham Thorpe, but there were no fundamental changes.
"To get 95, I was absolutely delighted. I was a bit disappointed not to get to a hundred but it's only five runs," said Bairstow.
Bairstow, asked what he was thinking when coming in at 54 for four, replied: "Let's go.
"In some ways it's quite lucky, that I've been in situations like that with Yorkshire, when we've been under the pump a little bit and I quite enjoy it," explained Bairstow.
"It was tough...There isn't a single bowler in that attack who isn't world-class."
Bairstow resumed Saturday on 72 not out, with England 208 for five.
The son of late England wicket-keeper David Bairstow, he spent 15 runless balls, all against Morne Morkel, on 95, as the fast bowler tied him down .
And the tall paceman was rewarded when he bowled Bairstow, aiming across the line, to end an innings of more than five hours duration featuring 13 fours.
Morkel led the attack with four for 80, with Steyn taking four for 94.
"If somebody had said we'd have been near 150 for three with two days to go, we'd have taken that," said South Africa assistant coach Russell Domingo, whose side trounced England by an innings and 12 runs in the first Test at The Oval.
"England are a quality side. The Oval was a spectacular performance, a near perfect performance, and it was going to be hard to match that."