Bumrah took 2-19 as South Africa were reduced to 60 for two in their second innings.
The hosts lead by an overall 88 runs after India were bowled out for 307 (92.1 overs) in their first innings, thus conceding a 28-run deficit.
Bumrah bowled a wonderful spell with the new ball even as the Supersport Park pitch started keeping low. He accounted for both Aiden Markram (1) and Hashim Amla (1) in the space of three overs as South Africa were reduced to three for two in the sixth over.
The former made batting look easy on an increasingly difficult track and in doing so, put on 57 runs for the third wicket with Elgar.
Also Read
This was after Virat Kohli scored 153 runs (217 balls, 15 fours) to keep India in the game.
Post lunch, he tried to shield Ishant Sharma (3) and their partnership for the ninth wicket lasted nearly nine overs during which they put up 25 runs.
Before lunch, Kohli struck his 21st hundred as India reached 287 for eight. Starting from overnight 183 for five, he and Hardik Pandya (15) took their overnight sixth wicket partnership to 45 runs. In doing so, they helped India cross 200 in the 65th over.
Kohli then reached his hundred off 146 balls, inclusive of 10 fours. He became the first overseas captain to score a Test hundred at Centurion. The previous highest for a visiting captain at this ground was 90 by MS Dhoni in 2010.
However, Kohlis joy was cut short as another suicidal moment of running between the wickets gifted South Africa a breakthrough, as Pandya was run-out for not dragging his bat in.
He had set off for a run in the 68th over, only for Kohli to send him back but Vernon Philanders throw from mid-on beat him by inches as Pandya didnt drag his bat or even grounded his foot.
Ashwin (38, 54 balls, 7 fours), but the batsman managed to survive a barrage of short balls, despite being hit on his left hand. He countered by taking three boundaries off Rabada in his next over.
The duo continued to score at a good pace and brought up their 50-stand off 62 balls.
South Africa took the second new ball in the 82nd over, and Philander immediately struck. Ashwin was caught at second slip off his third delivery. He put on vital 71 runs with Kohli for the seventh wicket.
On day one, South Africa won the toss and chose to bat with the pitch surprising everyone with its flat nature. Aiden Markram scored 94 and Hashim Amla made 82.
On day two, Indias reply was accentuated by Murali Vijays 46 as he put on 79 runs with Kohli. Cheteshwar Pujara was run out for a golden duck and Rohit Sharma only made 10 runs.
South Africa won the first Test in Cape Town by 72 runs and lead the three-Test series 1-0.
Disclaimer: No Business Standard Journalist was involved in creation of this content