With Indian batsmen struggling on the fast and bouncy track in Cape Town, the critics called for making changes in the batting line-up for the second Test in Centurion against South Africa. There was much criticism over the selection of Rohit Sharma over vice-captain Ajinkya Rahane, who has a better overseas record in the longest format. As Sharma failed to deliver with the bat in the first Test, it raised speculations whether posed Rahane might make a return in the playing XI in Centurion.

After losing the toss for the second time in a row, and made to bowl first, Indian skipper Virat Kohli announced the three changes that were made in the squad – surprisingly, Rahane for Rohit was not one of them. There were rumours that India might give Parthiv Patel an opportunity in place for Wriddhman Saha which turned out to be true, as the Indian captain announced that Saha is suffering from an injury and they do not wish to risk him.

After a poor showing with the bat in Newlands, opening batsman Shikhar Dhawan was replaced with KL Rahul, who has a better overseas record. In a surprise move, India also replaced their star bowler from the first Test, Bhuvneshwar Kumar, with Ishant Sharma, as Kohli said they are looking for extra pace and bounce which Sharma could deliver. The rest of the team remained the same, including Rohit Sharma.

With Dale Steyn being ruled out for the rest of the series after picking up an injury in the first Test, South Africa brought in seamer Lungi Ngidi who is making his international debut at his home ground.