Johannesburg: Nightwatchman Kagiso Rabada frustrated the Indian bowlers for 114 minutes as South Africa reached 81 for 3 in 31 overs at lunch on the second day of the third Test.
They now trail by 106 runs after India were dismissed for a paltry 187 in their first innings.
At the break, Hashim Amla was unbeaten on 32 (52 balls, 5 fours) while AB de Villiers (0*) was keeping him company.
Starting from overnight 6/1, Rabada looked to bat for time in a bid to help South Africa an early march on day two.
Bhuvneshwar Kumar (2/17 in 11 overs) bowled a superb spell of 6-5-1-1 that mirrored Vernon Philander's effort of 8-7-1-1 from day one. He had Dean Elgar (4) in all sorts of trouble, as the left-hander was unable to comprehend the outswinger from Kumar.
Finally, in the 7th over of the morning, Kumar got his reward as Elgar edged behind off another out-swinger.
Amla then joined Rabada and the duo frustrated India with a 66-run partnership for the 3rd wicket.
To counter his fallibility outside the off-stump, Amla had a massive trigger movement to counter the seam movement as both Jasprit Bumrah (0/21 in 8 overs) and Mohammed Shami (0/15 in 4 overs) got the ball to jag around after pitching.
Shami was wayward while Bumrah couldn't counter Amla's strategic approach on a tough pitch. Amla was beaten on umpteen occasions but the bowlers never induced an edge off him.
At the other end, Rabada gained in confidence as he ate up time and deliveries. He hit six fours during his stay at the crease, the highlight being a brilliant cover drive off Shami.
Rabada didn't look in any trouble whatsoever even as the Indian bowlers were guilty of bowling a tad shorter than Cheteshwar Pujara had underlined after close of play on day one.
They created one major chance to break this partnership as Ishant had a loud leg before shout off Amla turned down in the 28th over.
India went for DRS but the decision stayed in Amla's favour on umpire's call, as the ball seemed to just clip the stumps.
Rabada and Amla brought up their 50-partnership off 93 balls, and in doing so had taken South Africa past 50 earlier in the 26th over.
Two overs later though, Ishant Sharma (1/20 in 7 overs) got the breakthrough and Rabada was finally out, caught at gully as Ajinkya Rahane completed a smart catch.