With India reduced to 39 for three, Rohit (117 batting off 164 balls) and Ajinkya Rahane (83 batting off 135) shared an unbeaten 185-run stand to stage the home team’s remarkable recovery.
India were 224 for three before bad light, followed by rain, forced an early end to play on day one with only six overs possible in the final session.
With his stellar effort, Rohit, who hammered 14 boundaries and four sixes, became the first Indian opener since Sunil Gavaskar to score more than two centuries in a Test series. Gavaskar had achieved the feat way back in 1970.
Rohit’s Test century number six came with a massive six off spinner Dane Piedt. It was a typical knock from India’s limited overs captain as he exercised caution when Kagiso Rabada was steaming in the morning before going for his strokes.
If that was not enough, Rahane matched him at the other end and brought up his 21st half-century off just 70 balls.
Piedt, who was included in place of Senuran Muthusamy, cut a sorry figure against Rohit’s fury, giving away 43 runs in his six overs.
Debutant left-arm spinner George Linde, who replaced an injured Keshav Maharaj, ended the day with tidy figures of 11-1-40-0.
Such was the Indian duo’s dominance after lunch that Rabada, who had a fiery opening spell of 7-4-15-2, looked listless in the second spell that read 4-0-30-0.
Rahane matched Sharma shot for shot and at one point even had a better strike rate than his explosive Mumbai partner as he notched up his fastest half-century in India.
Sharma, however, had a testing opening session as he survived on seven after reviewing an LBW successfully.
He also survived a run out chance when he was out of crease but Zubayr Hamza’s throw from point missed the stumps.
Uneven bounce with a few staying really low greeted the Indian openers in the morning as Rabada and Lungi Ngidi made full use of the conditions to give the visitors their best start of the series.
Rabada got rid of opener Mayank Agarwal (10) and Cheteshwar Pujara (0) inside the first-hour of play.
The first breakthrough came in Rabada’s third over when the the pacer swung it away with Agarwal edging it to Dean Elgar at third slip.
Rabada went on to dismiss Pujara for a duck in his fifth over following a successful review by the South Africans after the on-field umpire Richard Illingworth turned down an lbw appeal.
But it was Nortje who earned the biggest wicket as he sent back Pune Test’s double centurion Kohli after the skipper failed to read one that came back in sharply.
Kohli took the review but only to be turned down with an umpire’s call and the skipper went back to the pavillion frustrated.
Earlier, 30-year-old left-arm spinner Shabaz Nadeem became the 296th player to represent India when he was handed a surprise Test debut less than 24 hours after being included into the squad in place of an injured Kuldeep Yadav.
In his bid to avoid the ignominy of a 3-0 whitewash, Du Plessis made as many as five changes to his team with two of them — Keshav Maharaj and Aiden Markram — being forced ones as they both are injured.
In came Ngidi, Zubayr Hamza, Heinrich Klaasen, Linde and Piedt with Vernon Philander, Theunis de Bruyn and Muthusamy being left out.