Rohit Sharma continued his sensational run as a Test opener with his third ton of the series, allowing India to regain control of the proceedings after a top-order collapse in the third game.
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.
Rabada got rid of opener Mayank Agarwal (10) and Cheteshwar Pujara (0) inside the first-hour of play.
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.