South African batters, led by their gutsy skipper Dean Elgar, dug their heels in to reach within 122 runs of a series-levelling victory against a determined India as the second Test seemed poised for a gripping fourth day finish in Johannesburg on Wednesday.
Elgar (46 batting off 121 balls) took some nasty blows off deliveries that spat off the cracks but kept his team on course at 118 for 2 in pursuit of a tricky 240-run target set by India in the wake of a solid century-plus partnership from the under-fire duo of Cheteshwar Pujara and Ajinkya Rahane.
Shardul Thakur (1/21), who is in the middle of a great Test match, got his eighth victim of the game in an over during which the ball seamed, bounced and kept low from the same spot with the last one finding opener Aiden Markram's (31) pads.
Keegan Petersen (28) added 46 with his skipper before Ravichandran Ashwin (1/14) got one to drift and turn getting a leg before decision going his way.
However, like every new innings in this game where heavy roller has made batting easier by ironing out the divots on the good length spots, Elgar was ready to play the ugly game putting his body on the line, getting hit on knuckles, chest, shoulder and even on head prompting a quick on-field concussion test.
While South Africa will that they have half a foot through the victory door, there has been numerous instances in the series where a batting collapse has changed the course of the game.
There are two things that would keep India worried going into the fourth day.
In this Test, the batting conditions have improved as the match has progressed --- 202, 229, 266 -- and secondly, Mohammed Siraj is far from fit and bowled only four out of the 40 overs sent down till now.
The Indian team, in its mind, knows that it is a bowler short.
While 240 as a target is more than decent, India could have pushed it a bit more had Rishabh Pant's poor shot selection, that incurred legendary Sunil Gavaskar's wrath in the commentary box, not happened at the most inopportune of moments.
Having been hit by a Kagiso Rabada bouncer, Pant charged to another short ball like a raging bull only to be caught behind that prompted Gavaskar to question his sense of "responsibility" urging for the "nonsense" in garb of natural game" to stop.
But it was a day when India's middle order finally came good through combative half-centuries from Pujara and Rahane.
Pujara (53 off 86 balls) and Rahane (58 off 78 balls) gave fresh lease of life to their respective careers with timely knocks while Hanuma Vihari (40 not out) also played a crucial part in swelling India's overall lead as they finished their second innings at 266.
Kagiso Rabada (20-3-77-3) was inspirational in the final half-an-hour before lunch as he brought his team back with quick dismissals.
Marco Jansen (17-4-67-3) and Lungi Ngidi (10.1-1-43-3) also played their parts to perfection.
The Indian middle-order, which has flattered to deceive on most occasions in the past couple of years, did its job and also got some much needed late-order support from Shardul Thakur (28).
Pujara and Rahane, in a rarely seen counter-attacking mode, added 111 runs in just 23.2 overs, getting some breathing space for themselves.
Having understood that time is indeed running out for them, both the batters decided not to try and hang around as they looked for scoring opportunities.
The half volleys were driven imperiously and the width was dispatched disdainfully square off the wicket.
When Jansen bowled one short, Rahane uncorked the slash over point for a six. Pujara's 50 came off 62 balls while Rahane's half-century was completed in 67, signalling that they were trying to show 'intent' and put team's interest above everything else.
They hit 18 fours and a six between them.
There was a time when India were 155 for two with a lead of 128 and it seemed that South Africa's propensity to bowl too short or too full was proving to be damaging.
But then Rabada, South Africa's best exponent of fast bowling since Dale Steyn, produced an inspired show that is so synonymous with the traditional format.
Rabada found that ideal back of length and it landed on the crack to deviate sharply, taking Rahane's edge into keeper Kyle Verreynne's gloves.
Pujara then got one from Rabada in the off-stump channel to be plumb in front despite lunging far forward.
However, the man who disappointed one and all was Pant, who first got a snorter from Rabada that hit his helmet viser when he tried to defend awkwardly, and then he charged to convert a short ball into a half volley. The result was an edge to keeper.
It was Vihari and Shardul, who were involved in a 41-run stand for the seventh wicket and then had two little but enormously important stands of 17 and 21 respectively with tailenders Jasprit Bumrah and Mohammed Siraj to set up a good chase for the Proteas.