Sidharth Monga is an assistant editor at ESPNcricinfo
India 327 (Rahul 123, Agarwal 60, Ngidi 6-71) and 174 (Pant 34, Rabada 4-42, Jansen 4-55) beat South Africa 197 (Bavuma 52, Shami 5-44) and 191 (Elgar 77, Bumrah 3-50, Shami 3-63) by 113 runs
India began the year by defending Sydney with their lives and then breaching Fortress Gabba. At 12.50pm on the final day of Test cricket in the year, they finished conquering Centurion, South Africa's best venue, consigning them to only their third defeat in 27 Tests there. India's complete and deep attack provided a resolute South African batting no respite and kept coming at them until the pitch yielded or the batters made a mistake, beating them by 113 runs despite a whole day's play lost to rain and more showers expected on the final day.
South Africa began the day needing 211 runs with six wickets in hand, but the only realistic tussle was between India and time. Forecast suggested rain could interrupt the final session, and led by a cussed Dean Elgar, South Africa would have wanted to last till then and then take it from there.
Elgar played one of his typical nuggety knocks, but eventually Jasprit Bumrah and the conditions proved to be too good for him. In the 10th over of the day, even as runs came quickly as India hunted wickets, Bumrah bowled an unplayable delivery to Elgar. On the surface it was not spectacular, but it was a rare kind of ball, one you can't intend to bowl.
Bowling around the wicket, Bumrah pitched short of a length, seam upright, but the ball hit a crack and cut back in. For a moment it seemed Elgar had that movement covered, but then the ball kept swinging further in. You have seen this swing after the ball bounces in England, but it happens on the way to the wicketkeeper not in the short flight from the pitch of the ball to striking the batter. Elgar tried to cover the movement, but ended up missing the ball, and was trapped lbw.
Now the next plan for South Africa was going to be a Quinton de Kock counterattack. This was a low-percentage approach, but the only sensible one given the amount of time left in the day. The ball was more than 50 overs old, and the ask was a further 175 runs. The pitch might have slowed down a little, but it wasn't such that de Kock could block out for a draw. Not against this attack.
So de Kock tried the counterattack, but one particular shot kept getting him in trouble: the dab, which also got him out in the first innings. Despite racing away to a quick 20, de Kock still didn't get any loose balls. India were into their second string now - that of Mohammed Siraj and R Ashwin - but there was nothing available to hit. Two balls after being beaten on that late-cut, de Kock finally chopped Siraj on to make it 161 for 6.
With lunch not far away, Virat Kohli asked Mohammed Shami for one more effort, and his seamer delivered the allrounder, Wiaan Mulder. This ball was a thing of minimalistic beauty. The seam of the 60-over-old ball bolt upright, it landed on a length, just outside off, making the batter play the angle, and then left him ever so slightly, taking an edge so thin that the seam remained proud and upright till the time the ball landed in the wicketkeeper's gloves.
South Africa survived till lunch, but post the interval, the end was swift, taking only two overs and bringing two bonus wickets for Ashwin.
KL Rahul, Lungi Ngidi rise in ICC rankings after Centurion face-off
Shami, Bavuma, Bumrah, Agarwal and Elgar also move up in the latest update
India docked one WTC point for over-rate offence in Centurion Test
Team also fined 20% of match fee for the offence
Stats - Quinton de Kock has been one of South Africa's - and the game's - finest wicketkeeper-batters
With the bat and behind the stumps, the South African put up some outstanding numbers
Joy of defensive game key to KL Rahul's Centurion success
Since being dropped from the Indian Test side after a poor run, the opener has stormed back to form