AB de Villiers crafted an unbeaten half-century to put South Africa in a promising position on a third day of the second Test which was cut short by bad light after India captain Virat Kohli lit up Centurion with a sublime hundred.
A magnificent 21st Test century from Kohli (153) got the tourists up to 307 all out on Monday, Morne Morkel taking 4-60 as the Proteas earned a first-innings advantage of 28.
An intriguing contest appeared to be swinging India's favour when Jasprit Bumrah reduced South Africa to 3-2, but De Villiers (50 not out) and Dean Elgar (36no) came to the rescue with an unbroken third-wicket stand of 87 on a deteriorating pitch.
South Africa were 90-2 when the players were taken off 10 overs into the final session under dark skies, leading by 118 as they strive to wrap up the series with one match to play.
Kohli carried on where he left off on day two after India resumed on 183-5, the skipper adding the 15 runs he needed to raise his bat yet again, reaching three figures by working debutant Lungi Ngidi into the leg side for two.
Hardik Pandya had shown restraint, but gifted South Africa his wicket when he ambled through for a single but was run out by Vernon Philander, the all-rounder failing to ground his bat or a foot despite being beyond the crease.
Kohli found another able partner in Ravichandran Ashwin (38), who dispatched Kagiso Rabada for three consecutive boundaries as Kohli continued to look untroubled.
Ashwin struck seven boundaries and put on a much-needed 71 with Kohli for the seventh wicket before edging Philander, steaming in with the new ball, to Faf du Plessis at second slip.
Morkel removed Mohammed Shami and Ishant Sharma cheaply, but Kohli was able to bring up 150 by pulling the paceman to the midwicket boundary before the innings was ended when he holed out to the same bowler.
Bumrah (2-30) set the alarm bells ringing for South Africa when he trapped Aiden Markram and Hashim Amla leg before, but De Villiers showed positive intent and Elgar grafted for his runs on a tricky surface, indifferent bounce making life difficult for the batsmen.
De Villiers found the ropes six times and reached his 50 before play ended prematurely due to the failing light, a rain delay having also brought the players off after tea.
|Napoli appoint Ancelotti after Sarri departure|
|NFL stars must stand for national anthem if on field|
|Mascherano laments Romero injury blow|
|´Mr 360´ De Villiers retires after going full circle|
|Ronaldo already a Real Madrid legend like Di Stefano - Nacho|
|Pep or Pepe? The Spanish footsteps Emery could follow|
|Arizona, New Orleans land Super Bowls as NFL draft heads to Nashville|
|Sarri thanked by Napoli chief De Laurentiis amid Ancelotti reports|
|You never know! - Vettel and Hamilton joke about potential Ferrari link-up|
|It´s a silly question - Carrick insists Pogba has Man Utd future|
|Yates protects Giro lead as Viviani takes fourth stage win|
|Ozil one of Arsenal´s biggest talents - Emery|
|Fastest ODI hundred, 278 not out - De Villiers´ best knocks|
|Deschamps: Rabiot has made a huge mistake|
|Arsenal players can challenge for titles, Emery insists|
|Salah can seal Ballon d´Or with Champions League win - Riise|
|I want Real Madrid to lose Champions League final - Alba|
|Leverkusen sign goalkeeper Hradecky|
|Arsenal job a ´dream come true´ for Emery|
|De Villiers hailed as a ´colossus´ after quitting Proteas|
|Benitez expects Lascelles to stay amid reported Liverpool interest|
|Saha tells Martial: Stay and work for Manchester United future|
|Atletico Madrid defender Savic undergoes hip surgery|
|Bess to make Lord´s debut against Pakistan|
|Vissel Kobe announce news conference amid Iniesta speculation|
|Yan Dhanda leaves Liverpool for Swansea|
|Injured Chung out of French Open|
|I wish he´ll come to PSG - Motta wants Buffon reunion|
|Guardiola praises new Arsenal boss Emery|
|Defensive woes, travel sickness and Ozil´s role - Emery´s Arsenal to-do list|
|WATCH: Anthony Joshua serves up Stephen Curry assist|
|De Villiers announces international retirement|
|Salah not comparable to Ronaldo yet - Karius|
|Toure open to Manchester United switch & wants to play with Pogba|
|Rockets backed up fighting talk, says Harden|
|Europa League master, record return at PSG - Arsenal boss Emery in Opta numbers|
|Curry not taking the blame for defeated Warriors|
|Arsenal confirm Emery appointment|
|Bellamy confirms talks with Brisbane Broncos|
|Ref took Champions League final away from Roma - Under|
|Goals galore and sinking City - Liverpool´s road to the Champions League final|
|Benitez: Winning Champions League changed my life|
|Brewers extend Diamondbacks´ losing streak to six|
|Weidenfeller bids farewell in Schmelzer´s last game as Dortmund captain|
|Owen surprised by Zidane success|
|Rockets break Warriors´ 16-game home postseason win streak|
|Bennett keen to see out contract as Broncos target Bellamy|
|Copa Libertadores Review: Silva helps Cruzeiro into last 16|
|Chargers tight end Henry suffers torn ACL|
|WATCH: Harden dunks all over Green|
|Madrid are linked to 50 players – Ronaldo laughs off Neymar rumours|
|Giants sign wide receiver Shepard|
|Salah wouldn´t improve Real Madrid – Del Bosque|
|Stevens says Tatum should´ve been unanimous All-Rookie First Team selection|
|Rodgers on Bryant: If he ends up here, we´ll welcome him|
|Jets´ Hackenberg dealt to Raiders for 2019 conditional pick|
|Mets sign Bautista, start him same day|
|Warriors´ Iguodala ruled out for game four|
|Guzman called up as Romero replacement for Argentina|
|Gaya signs new five-year Valencia contract|
|Celta appoint Antonio Mohamed as new coach|
|Klopp: Real Madrid have no weaknesses|
|Strauss ´stepping away´ from England role to support wife|
|Argentina rule Romero out of World Cup|
|Emery´s website appears to confirm Arsenal appointment|
|´Inspiring´ Guardiola has made Fleetwood a better golfer|
|Two trophies in a week! Torres leaves Atletico Madrid in style|
|I died a thousand deaths - Yates set for Giro defensive after time trial|
|Hamsik hints at Napoli exit amid China rumours|
|Rowett swaps Derby for Stoke|