Young South African seamer Lungi Ngidi took his first test wicket but India captain Virat Kohli led the resistance for the tourists as they reached 183 for five at the close of day two of the second test in Pretoria.
India trail South Africa by 152 runs having bowled their hosts out for 335 just before lunch on a slow wicket that has bounce, but little lateral movement.
Kohli will resume his innings on 85 not out along with all-rounder Hardik Pandya (11 not out) as the pair seek to eke out a first innings lead in the knowledge that batting last on a wicket already showing variable bounce will be a challenge.
India have tried to be positive with the bat, but have lost wickets at regular intervals, with the top seven so far failing to provide support for Kohli.
The openers took the score to 28 before losing their first wicket when Lokesh Rahul (10) was caught and bowled by Morne Morkel, misjudging a delivery that held up on the surface.
They lost another wicket on the next ball when new batsman Cheteshwar Pujara took on the arm of Ngidi at mid-on and lost, run out by a direct hit.
Murali Vijay (46) added 79 for the third wicket with his captain before he edged spinner Keshav Maharaj (1-53) to wicketkeeper Quinton de Kock.
Rohit Sharma (10) was trapped leg before wicket by the worldG��s leading test bowler Kagiso Rabada (1-33), before Ngidi (1-26) delighted the home crowd with his first test wicket G�� Parthiv Patel (19) edging to De Kock.
Kohli has played a superb innings in trying to hold the India effort together, scoring at a brisk pace as well with his 85 coming off 130 deliveries.
India had earlier taken the final four South African wickets in their innings for 66 runs in the morning session.
Home captain Faf du Plessis struck a well-compiled 63 before he was bowled by Ishant Sharma (3-46), but the pick of the touristsG�� attack was spinner Ravichandran Ashwin, who claimed 4-113 and also had three catches dropped off his bowling.
Mohammed Shami became the seventh Indian fast bowler to 100 test wickets when he had Maharaj caught by Patel, the third quickest to reach that mark in his 29th test after Kapil Dev (25 tests) and Irfan Pathan (28).
South Africa lead the three-test series 1-0 after a 72-run victory in Cape Town in the opening fixture.