Pretoria: India captain Virat Kohli blazed a magnificent century, but South Africa hold the upper hand as they reached 90 for two in their second innings on a difficult wicket after rain and then bad light curtailed day three of the second Test on Monday.
The home side lead by 118 runs having bowled India out for 307 after lunch, despite a classy 153 from Kohli, who played almost a lone hand in scoring half his side's runs.
AB de Villiers (50 not out) has taken the attack to the Indian bowlers after South Africa had sunk to three for two in their second innings on a wicket that is more Pune than Pretoria, with variable bounce and taking massive turn for the spinners.
De Villiers will resume on day four with opener Dean Elgar (36 not out), who has battled for rhythm but hung around in an unbeaten third wicket partnership of 87.
South Africa had been rocked earlier by a double-strike from Indian seamer Jasprit Bumrah (two for 30), who trapped both Aiden Markram (1) and Hashim Amla (1) leg before wicket with deliveries that skidded through after keeping low.
There would have been plenty of panic in the South African dressing room at that point, but De Villiers started playing attacking shots from the moment he reached the wicket to transfer the pressure back onto the tourists.
Kohli had spoken before the match about showing more "intent" against South Africa's seam attack and he duly delivered, compiling a brilliant 153 not out from 217 balls.
He now has 21 Test tons to go with 15 half centuries, a conversion rate when passing 50 that is only bettered in the game by Australian great Don Bradman, who made 29 hundreds and 13 fifties.
India had resumed on their overnight score of 183 for five, but lost Hardik Pandya (15) to a farcical run out as the all-rounder ambled into his crease and failed to put his bat down, only to be undone by a direct hit from Vernon Philander.
Kohli and Ravichandran Ashwin (38) shared a quick-fire seventh wicket stand of 71 in 14.2 overs, before the latter fell to Philander (one for 46).
Mohammed Shami (1) edged a Morne Morkel (four for 60) delivery to slip, while the latter also accounted for Ishant Sharma (3) when he was caught at short-leg.
Kohli was the last batsman out as he tried to attack the bowling, caught at deep mid-on to be become Morkel's fourth victim of the innings.
South Africa won the opening test of the three-match series by 72 runs in Cape Town.
South Africa 1st innings: 335
(A. Markram 94, Hashim Amla 82; I. Sharma 3/46, R. Ashwin 4/113)
India 1st innings
M. Vijay c Q. de Kock b K. Maharaj 46
L. Rahul c&b M. Morkel 10
C. Pujara run out 0
V. Kohli c AB de Villiers b M. Morkel 153
R. Sharma lbw Kagiso Rabada 10
Parthiv Patel c Q. de Kock b L. Ngidi 19
Hardik Pandya run out 15
R. Ashwin c F. du Plessis b V. Philander 38
M. Shami c H. Amla b M. Morkel 1
I. Sharma c A. Markram b M. Morkel 3
J. Bumrah (not out) 0
Extras (b-8, lb-1, nb-1, w-2) 12
Total (all out, 92.1 overs) 307
Fall of wickets: 1-28, 2-28, 3-107, 4-132, 5-164, 6-209, 7-280, 8-281, 9-306.
Bowling: Keshav Maharaj 20-1-67-1; Morne Morkel 22.1-5-60-4; Vernon Philander 16-3-46-1; Kagiso Rabada 20-1-74-1; Lungi Ngidi 14-2-51-1.
South Africa 2nd innings
A. Markram lbw J. Bumrah 1
Dean Elgar (not out) 36
H. Amla lbw J. Bumrah 1
AB de Villiers (not out) 50
Extras (lb-1, w-1) 2
Total (2 wkts, 29.0 overs) 90
Fall of wickets: 1-1, 2-3.
To bat: F. du Plessis, Q. de Kock, V. Philander, L. Ngidi, K. Maharaj, K. Rabada, M. Morkel
Bowling: Ravichandran Ashwin 12-0-33-0; Jasprit Bumrah 8-2-30-2; Ishant Sharma 4-0-14-0; Mohammed Shami 5-1-12-0.