India captain Virat Kohli stood firm against a relentless South Africa bowling attack on an attritional second day of the second Test at Centurion.
Kohli made 85 not out as India reached 183-5 at the close in reply to South Africa's first-innings total of 335.
It was tough going for both batsmen and bowlers on a slow pitch, with Kohli making his runs off 130 balls with eight fours.
South Africa's four fast bowlers operated in short bursts, while left-arm spinner Keshav Maharaj bowled a lengthy spell and broke the biggest partnership of the innings when he had Murali Vijay caught behind for 46.
Vijay and Kohli put on 79 for the third wicket after two wickets fell in two balls with the total on 28, with Lokesh Rahul falling to a sharp return catch to Morne Morkel and Cheteshwar Pujara being run out attempting a single off the first ball he faced.
Pujara played Morkel to mid-on and set off for a run, but debutant Lungi Ngidi made good ground, picking up the ball and hitting the stumps at the bowler's end
Ngidi was one of four bowlers to take a wicket each. Having come close to dismissing Kohli leg before wicket - the India captain was saved by a faint inside edge on a ball which was crashing into his stumps - he had Parthiv Patel caught behind.
Earlier, South Africa captain Faf du Plessis made 63 before the hosts were bowled out for 335.
Du Plessis battled for 217 minutes and faced 142 balls before he was ninth man out, bowled when he went for a big hit against Ishant Sharma.
South Africa added 66 runs to their overnight 269-6. Sharma took two of the four wickets that fell, finishing with 3-46, while off-spinner Ravichandran Ashwin claimed 4-113.
Watch day three of the second Test at Centurion between South Africa and India live on Sky Sport Cricket from 7.55am on Monday.