India lost their last six wickets for no runs in 11 balls as wickets tumbled on the first day of the second Test against South Africa at Newlands on January 3.
After bowling out South Africa for 55, India were dismissed for 153, a lead of 98 runs.
India seemed set for a substantial advantage when they reached 153 for four, with the experienced Virat Kohli and KL Rahul at the crease.
But Lungi Ngidi had Rahul caught behind and took two more wickets in the same over.
Kagiso Rabada had Kohli caught at second slip for 46 in the next over, Mohammed Siraj was run out and Prasidh Kumar caught at second slip.
Earlier Siraj took a career-best six for 15 as South Africa crashed to their lowest total in almost 92 years.
Brief scores:
South Africa: 55 in 23.2 overs (J. Bumrah 2-25, Mohammed Siraj 6-15, M. Kumar 2-0).
India: 153 in 34.5 overs (R. Sharma 39, S. Gill 36, V. Kohli 46; K. Rabada 3-38, L. Ngidi 3-30, N. Burger 3-42).
Playing XI
India: Rohit Sharma (c), Yashasvi Jaiswal, Shubman Gill, Virat Kohli, Shreyas Iyer, KL Rahul (wk), Ravindra Jadeja, Jasprit Bumrah, Mohammed Siraj, Prasidh Krishna and Mukesh Kumar.
South Africa: Dean Elgar (c), Aiden Markram, Tony de Zorzi, Tristan Stubbs, David Bedingham, Kyle Verreynne (wk), Marco Jansen, Keshav Maharaj, Kagiso Rabada, Nandre Burger and Lungi Ngidi.