Though, the first hour of day 2 was full of madness when Rabada got two lifelines, one when captain Kohli dropped his catch and second when Hardik and Shami let another opportunity after the two got confused of who what take the catch.
The first wicket of the day was of Keshav Maharaj who scored 18 runs for the team and was taken by Shami. It was his 100th Test wicket.
On day 1, Ravichandran Ashwin got two wickets to get rid of both the openers Dean Elgar and Aiden Markram, though Markram missed the century as he got out after scoring 94 runs.
For India, the team management replaced wicket-keeper batsman Wriddhiman Saha and opener Shikhar Dhawan with Parthiv Patel and KL Rahul, after they failed to play along with the bouncers and seaming conditions.
Dean Elgar 31, Aiden Markram 94, Hashim Amla 82, AB de Villiers 20, Faf du Plessis 63, Quinton de Kock 0, Vernon Philander 0, Keshav Maharaj 18, Kagiso Rabada 11, Morne Morkel 6 and Lungisani Ngidi not out 1.