Opening batsman KL Rahul gave India an ideal start in their quest to win a Test series in South Africa with a solid century on the first day of the first Test at SuperSport Park in Centurion on Sunday.
Rahul made 122 not out as India reached 272 for three at the close after Indian captain Virat Kohli won the toss and decided to bat on a green-tinged pitch.
It was only a temporary setback for the tourists, however as Rahul shared a third wicket partnership of 82 with Kohli (35) before he and Ajinkya Rahane added an unbeaten 73 for the fourth wicket.
Rahul provided a masterpiece of concentration and shot selection, marred only by a difficult chance to long leg off Wiaan Mulder when he was on 60. He faced 248 balls and hit 17 fours and a six.
Rahane, whose place in the team had been questioned after a run of poor form, struck the ball crisply in making an unbeaten 40 off 81 balls with eight fours.
Ngidi was the only successful bowler, taking three for 45.
Kohli said at the toss that India's win against South Africa in the third Test in Johannesburg on their previous tour in 2017/18 had given them the confidence of knowing they could win away from home.
It was a chastening day for South Africa's fast bowlers in conditions which should have been in their favour.
Already without strike bowler Anrich Nortje, out for the series with a hip injury, South Africa surprisingly gave a first cap to tall left-arm fast bowler Marco Jansen ahead of Duanne Olivier, the leading wicket-taker in domestic first-class cricket this season.
Jansen, 21, created the only chance of the morning, having Agarwal dropped by wicketkeeper Quinton de Kock with his score on 36 and the total 52. He produced some threatening deliveries but also sent down some loose balls which were punished.
The South Africa team wore black armbands in honour of anti-apartheid icon Desmond Tutu, described as the country's moral compass, who died on Sunday aged 90.
Both teams also held a minute's silence.