India grasped the initiative with four wickets in the final session after half-centuries from Aiden Markram and Hashim Amla put South Africa in a promising position on day one of the second Test.
Markram continued his impressive start to his Proteas career, striking 15 boundaries in a well-crafted 94 and Amla made 82, having been dropped by wicketkeeper Parthiv Patel on 30, but India hit back after tea at Centurion.
Spinner Ravichandran Ashwin took 3-90 and Hardik Pandya produced a moment of brilliance to run out Amla as South Africa, handing a debut to paceman Lungi Ngidi, slipped from 246-3 to 269-6 at stumps.
Ishant Sharma, recalled along with Parthiv and KL Rahul in place of Bhuvneshwar Kumar, Wriddhiman Saha and Shikhar Dhawan respectively, removed AB de Villiers in a final session which ended with India in the ascendancy after toiling for much of a hot Saturday.
Amla has made at least a fifty in 10 of the 12 Tests he has played at Centurion. He averages over 80 at the venue. #SAvInd— ESPNcricinfo stats (@ESPNcric_stats) January 13, 2018
Markram and Dean Elgar saw off the new ball on a flat pitch after Faf du Plessis won the toss, the former playing a couple of exquisite off drives when the expensive Mohammed Shami over-pitched after runs had been hard to come by.
The India quicks, Shami aside, had been well disciplined, but Jasprit Bumrah was taken for 13 in an over before Virat Kohli wasted a review for caught behind when he thought Elgar had edged Ashwin through to Parthiv.
A confident Markram reached his fifty off 81 balls and South Africa moved to 78 without loss at lunch, but Murali Vijay ended an opening stand of 85, juggling to take a catch at silly point as Ashwin tempted Elgar into a loose drive.
Markram continued to punish stray deliveries that came along and looked set for a third Test hundred in just seven visits to the crease, but fell six runs short when he feathered Ashwin through to Parthiv and failed to get the decision overturned.
A diving Parthiv was unable to hold on down the leg side after Amla edged a delivery from Ishant, who was rewarded for his endeavour by removing De Villiers, the former skipper chopping on for 20 after tea.
Amla brought up his half-century by punching Ashwin to the cover boundary and appeared destined for a 29th Test hundred, only for Pandya to swoop and unleash a bullet of a throw to run him out with a direct hit.
The Proteas lost three wickets in just 14 balls to give India the upper hand, Quinton de Kock edging the impressive Ashwin to Kohli at first slip from his first delivery before Vernon Philander was run out for a duck.
Du Plessis and Keshav Maharaj prevented further damage from being done, but they will return to the crease on Sunday morning with work to do.
|Balbirnie happy to boost Ireland chances|
|The better Ronaldo is, the better Madrid will be – Vazquez lauds four-goal hero|
|Ireland inspired by retired team-mates – Sexton|
|Indian Wells crown surreal for Osaka|
|F1 2018: Everything you need to know|
|Salah ´unstoppable´ like Messi, says Watford boss Gracia|
|Demanding Mourinho is still special, insists Matic|
|Truex Jr sweeps stages and wins first race of 2018|
|Woods pleased with progress at Bay Hill|
|McIlroy cruises to victory at Bay Hill, where Tiger impresses|
|Dallas 3 Seattle Sounders 0: Dempsey sees red after VAR|
|Ronaldo ´from another galaxy´, says Zidane|
|Del Potro saves match points to stun Federer for Indian Wells title|
|Eusebio Sack-ristan: Real Sociedad part company with head coach|
|Fassone ready for Gattuso talks after Milan resurgence|
|Napoli 1 Genoa 0: Albiol goal maintains pressure on Juve|
|Real Madrid 6 Girona 3: Four-goal Ronaldo continues hot streak with 50th career hat-trick|
|USA boss Sarachan calls up Weah for Paraguay friendly|
|Excellent Leipzig deserved Bayern win - Heynckes|
|Marquez will sleep easily after last-ditch Qatar move|
|Conte impressed by Morata´s return to scoring form|
|I lost the game myself - Simeone accepts responsibility for Atletico Madrid defeat|
|Borussia Dortmund to delay final Stoger decision - Zorc|
|Toulouse topple leaders Montpellier|
|Puel stands by Schmeichel after FA Cup blunder|
|Neymar could be back for Coupe de France final, says Silva|
|Valverde waits on Iniesta answer as Barcelona captain considers exit|
|Magnificent Osaka claims maiden title at Indian Wells|
|Villarreal 2 Atletico Madrid 1: Unal deals LaLiga title race blow for Simeone´s men|
|Leicester City 1 Chelsea 2 (aet): Pedro and Morata send Conte´s men through|
|RB Leipzig 2 Bayern Munich 1: Werner strike seals memorable triumph|
|Gattuso demands lift from out-of-favour Kalinic|
|Karthik hits final-ball six to win Nidahas Trophy|
|Messi puts us where we are right now - Alcacer hails Barcelona superstar|
|Dovizioso holds off Marquez in Qatar to draw first blood|
|Sampaoli ´right´ to pick others - Icardi understands Argentina snub|
|Barcelona 2 Athletic Bilbao 0: Messi and Alcacer secure comfortable success|
|Hughes excited by Southampton quality|
|Nice prepared for ´likely´ Balotelli departure|
|Wales captain Jones set to miss summer Tests|
|Germany defender Halstenberg extends RB Leipzig contract|
|No offers for Roma´s Alisson, says Monchi|
|Constant compliments guarantee defeat, claims Inter boss Spalletti|
|Scoring 100th Serie A goal at Sampdoria was ´destiny´, says Icardi|
|Stoger happy with Gotze response after public criticism|
|AC Milan 3 Chievo 2: Silva spares Rossoneri once more|
|Silva confident Neymar´s future is at PSG|
|´Shameful´ PSG cannot buy a team, says Balotelli|
|All Black Squire suffers broken thumb|
|Everton goal hero Tosun glad Palace move fell through|
|Wigan Athletic 0 Southampton 2: Hojbjerg and Cedric give Hughes first win|
|Pistons got absolutely screwed - Van Gundy slams officiating in loss to Trail Blazers|
|Selection shake-up not down to Ashes drubbing - Strauss|
|Fiorentina rename training ground after late captain Astori|
|Usain Bolt issued Commonwealth Games warning to Yohan Blake|
|Borussia Dortmund 1 Hannover 0: Batshuayi the difference again for Stoger´s men|
|Nice 1 Paris Saint-Germain 2: Alves earns late victory for runaway leaders|
|Icardi 100: Inter captain´s Serie A landmark in Opta numbers|
|Sampdoria 0 Inter 5: Four-goal Icardi demolishes former side|
|Gray´s tackling ton and Italy´s woeful run - the Six Nations in Opta facts|
|Van Gaal: Heynckes can become a Bayern Munich god|
|Real Madrid without Ramos for Girona test|
|South Africa include Morris & Olivier for remainder of Australia series|
|Icardi reaches 100 Serie A goals against former club Sampdoria|
|Ireland Grand Slam heroes denied homecoming by weather|
|Cardiff trip to Derby postponed due to snow|
|Ogbonna gets Italy call as cover for doubtful Chiellini|
|Sunderland suspend Gibson after drink-driving charge|
|Manly claim record Eels thrashing, Knights win late again|
|Winning FA Cup is not important, claims Chelsea coach Conte|