The ace batsman holed out to Lungi Ngidi at the fine leg boundary off Rabada in the 89th over, and after the dismissal, all the Proteas players walked up to him to acknowledge the knock.
Rohit's more than six-hour vigil at the crease saw him script a career-best 212 from 255 deliveries, his innings laced with 28 fours and six sixes.
Rohit always looked good for a 'big daddy' hundred when he came out to bat with an overnight score of 117 on the second day, milking the Proteas bowlers around with relative nonchalance.
The 32-year old, who has three double hundreds in white-ball cricket with a career-best score of 264, got to 150 in 199 balls and raced to the 190s from there in quick time.
Rohit hit Andrich Nortje for back-to-back boundaries in the 84th over, the penultimate before lunch, to race to 196 and in the last over before the break survived few edges off Kagiso Rabada to move to 199 from 242 balls.
Just after the break, India's limited-overs vice-captain tonked Lungi Ngidi for a six to get to his milestone in style, and got to his hundred in this innings.
The shot was a full-blooded pull in front of square as the ball sailed into the stands and the dressing room rose together to applaud the effort. Rohit, often compared to Virender Sehwag for his dashing style as a Test opener, paid a fitting tribute to the former India batsman on his 41st birthday.
Batting as an opener for the first time in this series, Rohit, on the first day, added yet another feather to his cap by becoming the batsman to hit the most number of sixes in a Test series.
During the ongoing three-Test series against South Africa, Rohit has so far hit 17 sixes and has surpassed Shimron Hetmyer's tally of 15 which came during the two-match series between West Indies and Bangladesh in 2018/19.
Rohit already holds the record for hitting the maximum number of sixes in a Test match. During the first Test in Visakhapatnam, the stylish batsman hit 13 sixes and went past Wasim Akram's tally of 12 maximums which the Pakistan pacer had hit during his 257-run knock against Zimbabwe in 1996.
Besides Rohit, Test vice-captain Ajinkya Rahane also scored his 11th Test ton to break his long stretch of poor form. He and Rohit shared a marathon 267-run partnership for the fourth wicket before Rahane (115 off 192 balls; 17x4; 1x6) was caught behind by debutant wicketkeeper Heinrich Klaasen off fellow first-timer George Linde who scalped his first Test wicket.