South African fast bowler Duanne Olivier took two wickets off successive balls as India struggled to 53 for three at lunch on the opening day of the second Test against South Africa on Monday.
India were without captain Virat Kohli, who was a late withdrawal because of what stand-in captain KL Rahul said was an upper back spasm.
The tourists, seeking to clinch the series after winning the first Test in Centurion, made a solid start at the Wanderers Stadium, with Rahul and Mayank Agarwal scoring 36 runs in the first hour.
But left-arm fast bowler Marco Jansen struck with the first ball after the mid-morning drinks break when he had Agarwal caught behind for 26.
Rahul and Cheteshwar Pujara batted cautiously against some accurate bowling before Olivier, returning to the South African team after a stint in England, produced extra bounce to have Pujara caught at gully for three.
Ajinkya Rahane fended the next ball to third slip to give Olivier his 50th Test wicket in his 11th match.
Rahul, who twice survived appeals for caught behind off Olivier, was 19 not out at lunch off 74 balls.
The other change to the South African lineup compared to the first Test was Kyle Verreynne replacing the recently retired Quinton de Kock as wicketkeeper.