South Africa's seamers revelled in helpful conditions as India were reduced to 136-9 on a weather-shortened opening day of the first Test at Centurion.
The start of play was delayed for over four hours by rain and, when the action did finally get under way, the home attack made up for lost time, fully justifying Proteas skipper Graeme Smith's decision to bowl.
Morne Morkel claimed 4-20 and Dale Steyn picked up 3-34 in the 38.1 overs that were possible before bad light ended play early.
Steyn made the opening breakthrough with the first ball of his second over, Virender Sehwag uppercutting straight to Hashim Amla three-quarters of the way back at third-man for a duck.
Gautam Gambhir (5) and Rahul Dravid (14) dug in to add 23 for the second wicket before Morkel removed both in consecutive overs.
Gambhir, having been given a fearsome working over, edged a drive to Paul Harris at first slip and Dravid was trapped lbw by one that cut back off the seam and kept a touch low to give Morkel his 100th Test wicket.
Sachin Tendulkar and VVS Laxman saw India through to tea without further loss on 55-3 but wickets tumbled in the evening session.
Laxman (7) was bowled by Steyn aiming to work a straight delivery to midwicket and Suresh Raina (1) guided his third ball, from Jacques Kallis (1-20), to Ashwell Prince at third slip.
Tendulkar had been in counter-attacking mode at the other end, hitting eight boundaries in reaching 36 from 34 balls before Steyn won an lbw decision against him with one that straightened off the pitch. His exit reduced India to 71-6 and in danger of total meltdown.
Mahendra Singh Dhoni and Harbhajan Singh went for their shots to add 39 off 45 balls to at least see the tourists into a collective three figures.
But Harbhajan (27), who scored back-to-back centuries in November during the series with New Zealand, was run out thanks to an excellent piece of work from wicketkeeper Mark Boucher.
Boucher hit the stumps with an underarm throw between his legs and Harbhajan dropped his bat in the effort of trying to make his ground.
Morkel quickly followed up with the scalps of Ishant Sharma and Shanthakumaran Sreesanth - both for ducks - to leave the visitors nine down at stumps.
India captain Dhoni (33no) will resume on the second morning with just debutant Jaidev Unadkat (1no) left for company.