Returning to the side after being dropped from the first two Tests, Rahane (46 not out) timed the knock to perfection as he played with gumption to take India to 199 for six at tea.
Rahane and Bhuvneshwar added crucial unbeaten 51 runs for to extend India's lead to 192 runs on a Wanderers track that is becoming increasingly dificult to bat with every passing hour.
In the second session, Rahane and Virat Kohli (41 runs off 79 balls) put on 34 runs for the fifth wicket. The duo was fluent and played attacking shots even as the pitch continued to deteriorate.
Kohli looked a class apart on a tough wicket and with the innings went past Mahendra Singh Dhoni (3454 runs in 60 Tests) in the list of most runs as Test skipper.
More From This Section
But he was bowled off an unplayable delivery from Kagiso Rabada (3//59) that seamed in off the pitch in the 50th over.
The duo were helped by South Africa's poor effort in the field as both Rahane and Bhuvneswar were dropped once each.
Dean Elgar first dropped Bhuvneshwar on 15 at gully off Morkel in the 59th over and then six balls later, Andile Phehlukwayo dropped Rahane on 38 at deep point off Rabada.
Just before tea, the duo brought up their 50-partnership off 68 balls, almost knocking the wind out of the Proteas.
Meanwhile, the pitch continued to come under increasing scrutiny. In the 58th over, Rahane was hit by Rabada and the two umpires Aleem Dar and Ian Gould had a long chat in the middle and inspected the pitch before play resumed.
The Wanderers' pitch is increasingly coming under criticism from former cricketers and commentators here for its dangerous nature. From the beginning, the ball was kicking off length from Corlett Drive End.
From the start of play on day three, the ball had started rearing up from Golf Course End as well.
The talk of the morning was about the uneven bounce of the Wanderers track with some of cracks on good length and short of it opening up.
In fact the former West Indies paceman went ahead and felt that some of the batsmen could be seriously hurt as everyone does not have the technique and big heart like Kohli.
"I understand Virat Kohli wants to play but not everyone can handle what he can," said Holding.
Earlier, opener Murali Vijay and skipper Virat Kohli showed lot of grit on a treacherous track as India reached 100 for 4 at lunch.
Vijay was out at the stroke of lunch when Kagiso Rabada's yorker cleaned him up after he showed a lot of patience scoring 25 off 127 balls during his three hour and 14 minutes vigil at the crease.
In the morning Rahul (16) chased one off Vernon Philander (2-21) and was caught at the second slip.
Three overs later, India were reduced to 57/3 as Cheteshwar Pujara (1) was caught at second slip too, this time off Morne Morkel (1/13). The ball just reared up off length and took the bat's shoulder and Pujara could do nothing about it.