India 57 for 2 (Kohli 14*, Pujara 9*, Rabada 1-6, Jansen 1-7) and 223 (Kohli 79, Pujara 43, Rabada 4-73) lead South Africa 210 (Petersen 72, Bumrah 5-42) by 70 runs
Two days done and dusted in a compelling Cape Town contest, and the destiny of a thrillingly fought series remains firmly up for grabs. In battling through to the close with an unbeaten third-wicket stand, Virat Kohli and Cheteshwar Pujara overcame the cheap loss of India's openers to stretch their side into a promising lead of 70. But on another day dominated by high-class fast bowling, it was Jasprit Bumrah's triumphant return to the scene of his 2018 Test debut that has so far made the crucial difference between the teams.
As India target an extraordinary triple-crown of overseas series wins in Australia, England* and now South Africa, Bumrah's Test career speaks directly to their dramatic transformation away from home (not that their standards on home soil have exactly suffered in recent times). He's playing his 24th Test out of 27 away from home, and now boasts a stunning haul of 112 wickets at 22.58, including each of his seven five-fors, a tally that no bowler has surpassed since that 2018 debut.
After prising out the critical wicket of Dean Elgar in the closing moments of day one, Bumrah was right back on the mark from the moment that play resumed under gleaming blue skies at Newlands - his second ball was a sharp inducker that surged past Aiden Markram's fatally upraised bat, into the off stump. At 17 for 2, India's 223 already looked significantly more substantial than at first glance.
And so it transpired for the remainder of an engrossing innings, as South Africa pinned their hopes of parity on another coming-of-age knock from the steadfast Keegan Petersen while riding out the contrasting, but unrelenting, threats of a superbly balanced India attack.
At varying moments in the course of the day - most notably when they reached lunch on 100 for 3 with only the additional loss of the nightwatchman Keshav Maharaj, and again half an hour before tea, when two wickets in three balls from Mohammed Shami again derailed a well-established innings - South Africa looked set for a significant lead. Instead, their final six wickets were picked off for 51 - not without a fight, but with a certain inevitability, such was the calibre of the attack bearing down on them.
The key scalp of the innings was that of Petersen for 72, and sure enough, it was Bumrah who delivered with his second wicket of a pre-tea double whammy that, moments earlier, had served up the dangerous Marco Jansen, bowled for seven by that relentless inducker as he played down the wrong line.
For the first hour of his innings on a baking-hot morning at Newlands, Petersen had set his sights purely on survival. With Maharaj providing a measure of impetus in a doughty stay as nightwatchman, Petersen had just six runs from 42 balls by drinks, all the while buoyed by the memories of his breakthrough fifty at the Wanderers last week, in a similarly low-scoring tussle.
He needed some luck to make it that far, however, including when KL Rahul failed to wrap his fingers round a low edge to third slip on four. But when Umesh Yadav's scrambled seam burst through Maharaj's loose drive to bowl him for 25 just before the hour mark, Petersen took his cue for a controlled counterattack.
With Rassie van der Dussen now taking his turn to drop anchor, Petersen cashed in on a fractional slackening of India's extreme discipline, with six fours flowing from the next nine overs, including four exceptionally placed carves through the off side when offered a fraction of width, and a flick off the toes through midwicket off Shardul Thakur. Even R Ashwin, typically economical in an understated nine overs of deployment, couldn't escape Petersen's flood of confidence as he reverse-swept the third ball he faced past backward point.
In consecutive overs before lunch, the pair brought up both their fifty stand and South Africa's 100, but van der Dussen's poise vanished during the 40-minute interval. He could have run himself out twice straight after the break, but instead fell for 21 to a scuffed drive off Yadav, with Kohli at second slip clinging onto a fast-flying edge.
Petersen, however, found another important ally in Temba Bavuma - himself enjoying a period of serenity as a Test asset, for all that that another hundred (to follow up the famous maiden effort he made on this same ground in 2016) remains elusive. Few current players can put away a cover-drive with more aplomb right now, and in a hint at South Africa's waxing fortunes, he even managed to turn a dropped catch at first slip into five bonus runs, as Pujara's spill rolled into the stack of helmets behind the wicketkeeper.
But on 28, and moments after the fourth and final bullet boundary of his innings, Bavuma was undone as Shami dragged his length back for Kohli to cling onto his 100th Test catch at second slip, and when Kyle Verreynne dangled his bat loosely two balls later to depart for a duck, South Africa were 159 for 6, and back in a heap of trouble.
That was the cue for Bumrah to rev back into action. For three consecutive overs he tormented Jansen in the channel outside off, then did for Petersen with some extra lift into the heel of the bat. And despite some long-handled resistance from the tail, most particularly Rabada, he would not be denied his first five-for since the Trent Bridge Test in August last year, as Lungi Ngidi looped a leading edge into the covers.
The day's jeopardy wasn't done just yet. With a slender lead of 13, Mayank Agarwal overturned an early lbw verdict in a hornet-like new-ball onslaught from Rabada, but departed soon afterwards for 7 as Rabada fizzed a full-length delivery off the edge to first slip. And though Duanne Olivier's first two-over spell was wayward, Jansen's opening gambit was anything but, as KL Rahul was enticed by the full length, and fenced a fourth-ball drive to Markram in the slips.
Kohli, however, fresh from his supreme 79 in the first innings, refused to allow his side's ascendancy to slide any further, as he and Pujara closed up for the evening in a 33-run stand.