In the 59th over of India's innings, Duanne Olivier banged in a short ball. It rose steeply, but it was just far enough outside off stump to allow Mohammed Shami, India's No. 9, to free his arms and uppercut over the slips for four.
If you're of a certain age, you might have been taken back to November 2001, when Sachin Tendulkar and Virender Sehwag, on Test debut, unleashed a dizzying array of uppercuts and ramps during a fifth-wicket stand of 220 in Bloemfontein.
This Johannesburg pitch was as bouncy as that one in Bloemfontein, but until that shot from Shami, this South Africa attack hadn't given this India line-up the opportunity to play that sort of shot. They bowled a lot of short balls, but mostly directed at the body, denying room to free the arms.
And while the bounce here was often steep, it was of a spongy, tennis-ball nature, popping steeply without the ball necessarily arriving at a predictable pace. At Bloemfontein the bounce had been far truer, allowing Tendulkar in particular to sway away from the line and manufacture room against short balls angled into him.
India, in short, were up against a testing attack on a testing pitch in the here and now. Yet again. It's been the case at nearly every venue they've played at over the last two years or so, overseas but often even at home.
You probably know where this is going. You've seen the headline.
You've seen the scorecard, too: 3 (33) and 0 (1), on a day when every other member of the top seven got into double figures. 3 (33) and 0 (1), on a day when the other senior middle-order batter was absent. 3 (33) and 0 (1), at a time when runs have been hugely elusive. Not a good look for Cheteshwar Pujara and Ajinkya Rahane.
Pujara didn't look particularly good during his time in the middle. South Africa had a clear plan for him: use the spongy bounce and target his low hands. The ball popped constantly at him from just short of a length, and two inside-edges eluded short leg - a similar delivery had led to his first-ball dismissal in the first innings in Centurion - before the eventual wicket ball from Olivier, which hit the bat's outside shoulder and lobbed gently to backward point.
Pujara had survived 32 balls before that, scoring three runs, two of them off those inside edges. Two other balls that might have been scoring opportunities on other pitches, full from Marco Jansen and short from Olivier, stopped on him, and he ended up driving and slapping them, respectively, to wide mid-off, rather than into the big gap square of the fielder.
And Rahane? He only faced the one ball, and it's hard to judge someone after a first-baller, but did he really need to push at that ball? There was some of the same steep bounce that had consumed Pujara, but it wasn't a monster ball that Rahane had to play at. And this shot, this half-shot, came after two promising starts in Centurion that had been aborted by shots that you could have called loose, if you wanted to.
That's been the trouble with Rahane, really. His dismissals leave too much room for interpretation, and of late have usually followed low or middling scores.
Pujara and Rahane have been stuck in ruts for many, many months now, and there's been no easy way out of them. Flat pitches and shallow attacks have been few and far between, and where others in better form - Rohit Sharma and KL Rahul, for instance - have still found ways to score runs, Pujara and Rahane have endured either bad days or good days defined by things other than sheer weight of runs. Spells seen off, time spent at the crease, miles added to bowlers' legs, and sessions rescued are all well and good, but runs are runs, and hundreds are hundreds, yaar.
At the end of 2019, Pujara averaged 49.48, and Rahane 43.74. They now average 44.05 and 38.90.
India's team managements have backed Pujara and Rahane heavily through this period, more heavily than they did when they were younger and going through less prolonged troughs. They've certainly earned that backing, through the weight of past performance and the influence of their contributions even during this lean phase, contributions that have helped India achieve some of their greatest moments as a Test team, ever: the MCG, the SCG, Gabba, Lord's and The Oval.
But could younger and more in-form candidates have made the same sorts of contributions? You don't know until you try them. And when all or even most of India's batting options are fit and available, the list of candidates will be long and compelling.
There probably isn't a lot of time left now for Pujara and Rahane to turn things around. There won't be an easy way out of their ruts either. No shallow attacks, no flat pitches. The same was the case for Rahul when he went through a prolonged slump in 2018 and 2019, averaging 22.23 over 15 Tests .
Things have turned around for him now, spectacularly; in the matter of months, he's gone from fourth-choice opener to stand-in Test captain. But he won't have forgotten the bad times. Watching from the other end as Pujara and Rahane walked off, one ball after another, he might have proffered a wordless look of sympathy.