Indian captain Virat Kohli stood firm against a relentless South African bowling attack on an attritional second day of the second Test at SuperSport Park on Sunday.
Kohli made 85 not out as India reached 183 for five 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 on a hot day. Kohli made his runs off 130 balls with eight fours.
South Africa's four fast bowlers operated in short spells 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. New cap Lungi Ngidi made good ground, slid to pick up the ball and hit the stumps at the bowler's end from a prone position.
The powerfully built Ngidi was one of four bowlers to take a wicket each. He built up impressive pace, with one delivery timed at 150.5 km/h.
Having come close to dismissing Kohli leg before wicket -- the Indian 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 African 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 for six.
Sharma took two of the four wickets that fell, finishing with three for 46, while off-spinner Ravichandran Ashwin took four for 113.
India dropped three catches, all off Ashwin. Kagiso Rabada, who made 11, was dropped by a diving Kohli at slip when he had one, with the batsman taking two runs.
He was then put down at point off the next ball when Hardik Pandya was obstructed by fellow fieldsman Mohammed Shami.
Du Plessis was dropped by wicketkeeper Patel off Ashwin when he had 54.