India's much-vaunted batting line-up fell apart in the face of a Vernon Philander-led pace attack that bowled with relentless aggression as South Africa beat the tourists by 72 runs on Day 4 of the first cricket Test in Newlands, Cape Town on Monday.
While South Africa grabbed a 1-0 lead in the three-match series, the visitors squandered a golden opportunity to script a memorable win outside the sub-continent.
Needing 208 on day four for only their third Test win on South African soil, the Indian batsmen let their team down for the second time in the match, getting skittled out for 135 in 42.4 overs.
The game finished well inside three days after a full day's play was washed out on Sunday.
Despite the absence of Dale Steyn in the second innings, the South Africa pace department had enough firepower to expose the visitors' batting line-up on a bouncy and seaming surface.
Philander was simply outstanding with his pace and precision, ending with a career-best six for 42 and match haul of nine wickets.
Mornel Morkel and Kagiso Rabada played the supporting role well, finishing with two wickets apiece in the second innings.
With India reeling at 82 for seven, R Ashwin (37) and Bhuvneshwar Kumar saved them the embarrassment of being bowled out for under 100.
The duo shared a 49-run stand for the eighth wicket, the highest of the innings, but it folded quickly after Philander had Ashwin caught behind with the keeper standing up.
Post lunch, India began in circumspect fashion. Shikhar Dhawan (16) looked to make a quick start, but Murali Vijay (13) struggled against Philander.
The latter survived twice via DRS reviews for caught behind and LBW appeals. Vijay wasn't third time lucky though, caught behind off Philander in the 8th over, opening the floodgates.
Six balls later, Dhawan was caught pulling much like the first innings, only this time off Morkel (2-39). Four overs later, India were struggling at 39/3 as Cheteshwar Pujara (4) was caught behind, again off Morkel.
Virat Kohli (28) and Rohit Sharma (10) stemmed the slide by adding 32 runs for the fourth wicket. After drinks though, Philander returned from the other end and trapped Kohli in front of the wicket.
India were desperately struggling thereafter. Keshav Maharaj (0-12) dropped Sharma (on 9*) off Rabada (2-41) in the 23rd over, but the batsman didn't make this chance count. An over later, he played on to his stumps off the bowling of Philander.
First innings' hero Hardik Pandya (1) then gave slip catching practice off Rabada as India lost eight wickets for 52 runs in this session. Wriddhiman Saha (8) fell at the stroke of tea, trapped lbw by Rabada.
Post tea, Ashwin and Kumar looked to bat for time. They put on 49 runs for the 8th wicket to take India past the 100-mark and raised visions of an improbable win.
However, they were misplaced as Quinton de Kock pulled off a smart catch standing up to Philander.
Philander picked up his 12th five-wicket haul as Mohammed Shami (4) was caught at second slip two balls later. He finished things off in style as Jasprit Bumrah (0) was out in the same fashion on the very next ball. Philander improved on his previous best of 6-44 against New Zealand in March 2012.
Earlier, Mohammed Shami and Jasprit Bumrah shared six wickets as South Africa were bowled out for 130 runs (41.2 overs) in their second innings at the stroke of lunch.
The hosts lost 8 for 65 in the morning session to lead by overall 207 runs. Shami took 3-28 while Bumrah had 3-39.
Starting from day two overnight 65/2, the slide began in the second over of the morning. Shami had Hashim Amla (4) caught at gully with Rohit Sharma taking a low catch. The decision went up to the TV umpire but he didn't find conclusive evidence to overturn the soft signal.
Four overs later, Shami sent back Rabada (5), caught at second slip. In the 29th over then, when Bumrah had Faf du Plessis (0) caught behind off a snorter, South Africa were struggling at 82/5.
Bumrah also removed Kock (8) as it became 92/6 and the collapse became imminent. AB de Villiers (35 runs) waged a lone battle at the other end but he couldn't find anyone to support him.
South Africa crossed 100 in the 36th over as Keshav Maharaj (15) played a few strokes. Bhuvneshwar Kumar (2-33) then got down to action with the batsman caught behind in the 39th over.
Saha took his 10th catch of the Test when Morne Morkel (2) was caught behind off Kumar two overs later. This is an Indian record overseas as Saha went past MS Dhoni who had nine catches against Australia in his last Test at MCG in 2014.
Bumrah completed South Africa's misery as de Villiers holed out in the deep in search of some quick runs, rounding up a dismal morning. Dale Steyn, batting despite a bruised ankle, was the unbeaten batsman.
Day three was completely washed out due to persistent rain.