Having dismissed India for 209 in the first innings, South Africa resumed on 65-2 with no play possible on day three, but quickly slumped to 130 all out, Mohammed Shami (3-28) and Jasprit Bumrah (3-39) the pick of their bowlers as India had the scent of victory in their nostrils.
The tourists' target of 208 soon seemed out of reach, however, as the Proteas blitzed through India's batting line-up, even without Steyn - whose comeback was curtailed by a heel injury.
Steyn will be out for the rest of the series, but South Africa should have plenty of confidence in the rest of their attack as Philander - aided by Morne Morkel (2-39) and Kagiso Rabada (2-41) - took 6-42 to skittle India for 135.
India will now have five days to lick their wounds and regroup ahead of the second Test in Centurion, where South Africa will look to take an unassailable 2-0 lead in the three-match series.
— ICC (@ICC) January 8, 2018
Things looked much brighter for India in the second over the day as Rohit Sharma's low catch was confirmed by the television umpire to remove Hashim Amla (4), as the Proteas star looked to punch Shami through the covers.
Nightwatchman Rabada then edged the same bowler to captain Virat Kohli for five and Faf du Plessis went for a duck as he was undone by a stunning angling delivery by Test debutant Bumrah.
Quinton de Kock (8) fell cheaply on review, caught behind off a wonderful Bumrah ball that nipped back and drew a thin edge, and Keshav Maharaj (15) was the only lower-order batsman to offer assistance to AB de Villiers (35), who became Bumrah's third scalp for the final wicket.
Despite India's openers and Cheteshwar Pujara (4) all failing to provide a meaningful contribution, they looked well set having recovered from 39-3 to reach 71-3 with Kohli at the crease.
But India's captain was then struck on the knee roll by Philander and that huge wicket was followed by a middle-order collapse, with Hardik Pandya, whose 93 was the highlight of India's first innings, only able to add a solitary run.
Wriddhiman Saha's exit had India 82-7 and, though Ashwin's 53-ball 37 provided hope, a terrific catch from De Kock off Philander to dismiss him prompted wild celebrations.
And the tourists' resistance subsequently crumbled in the face of Philander's excellence as South Africa prevailed in an absorbing Test.
Photo Getty Images. Caption: Vernon Philander and South Africa celebrate the wicket of Rohit Sharma