There's a delicate artistry to Ajinkya Rahane's flick. In slow motion, you can see the choreography of all the moving parts - the top hand controlling the stroke almost right until the moment of contact, to ensure the bat is more or less vertical, and then the bottom hand taking over to direct the ball into a leg-side gap.

Rahane played this shot off the first ball he faced from Kagiso Rabada on Saturday, and beat midwicket to his right. He picked up two more leg-side fours during Rabada's post-lunch spell, and the fast bowler would eventually end it with figures of 4-0-30-0.

Figures can be extremely misleading sometimes, and they certainly were here, because Rabada's post-lunch spell was perhaps as good as his new-ball spell of 7-4-15-2, in which he had dismissed Mayank Agarwal and Cheteshwar Pujara.

When he was bowling to Rohit Sharma after lunch, he possibly looked even more threatening. He was fast, he was hostile, and on another day, he may have had the wickets to show for it.

Rabada made Rohit miss or edge the ball four times in nine balls during this spell, his legcutters ripping away from the batsman like 140kph legbreaks. That one edge ran away between second slip and gully.

There was an edge from Rahane, too, but the ball died before it could reach the cordon, and it neatly split first and second slip to race away for another four.

That apart, though, Rabada kept straying on to Rahane's pads, or overpitching while bowling at the stumps. He might have spotted a hole, maybe just a tiny one, in Rahane's technique - something to do with his trigger movement, perhaps, or his backlift - to try and burst through with a fast, full ball on the stumps, but his radar was off each time he tried it, though usually not by a long way.

Those are the margins of express pace, and Rahane pounced on every error. On this day, he was pouncing on every error from every bowler, gliding into position like he knew beforehand where the ball would land, and having all the time in the world to put the ball away anywhere he pleased. He has looked like this right from the start of India's tour of the West Indies in August, beautifully balanced, with not a muscle straining too hard or moving in the wrong direction.

His timing was, at times, inexplicably good. When he offered a straight-bat push to Rabada during his third spell, probably just a defensive shot that he played a touch early, the ball pinged off his bat like there was a spring in it, and Rohit at the other end had to duck for cover.

When Rabada ended his second spell, Rahane was batting on 43 off 48 balls, and Rohit on 52 off 89. They had come together at 39 for 3 after 15.3 overs, and added 79 in the next 15.3 overs, rattling along at 5.10 per over.

It felt like a counterattack but it wasn't, at least not in a deliberate way. Having got themselves into a great position with the new ball, South Africa kept pushing hard for wickets, and in the process lost a little bit of control. The batsmen enjoyed a little bit of luck, and had the quality to take full toll of the errors, big and small.

By the time the day's play ended, Rahane had control percentages of 93.28 overall, and 93.10 against Rabada. The corresponding figures for Rohit were 83.54 and 68.57.

Those numbers reflected what stages of the innings the two batsmen had needed to negotiate. Rohit survived a testing new-ball period against Rabada as well as the best balls he bowled after lunch. He played Rabada as well as anyone could have, getting into line, playing close to his body, and not following the movement with his hands. Opening batsmen know they can do all that and still get out, and on this day Rohit had the little bit of luck he needed to survive.

Having done that, and having sized up the pitch and the bowlers, he lit up the place with his strokeplay. There was a drive on the up off Anrich Nortje, off a ball that was on the shorter side of a good length, with a full extension of the arms. There was a back-foot punch off George Linde that made deep point redundant. Lungi Ngidi bowled with a short mid-off adjacent to the pitch, and a deeper wide mid-off, and Rohit split both of them with a flat rocket of a lofted drive. Quinton de Kock, who had been fielding at short mid-off, immediately moved to a more orthodox short extra-cover.

Faf du Plessis held back Dane Piedt, his offspinner, until the 39th over, probably to shield him from the force of Rohit's contempt. In Visakhapatnam, Rohit had hit Piedt for eight sixes while scoring twin hundreds. When du Plessis finally brought Piedt on here, almost resignedly, Rohit carted him for three more, including the inside-out shot that took him from 95 to 101.

By the time bad light and rain brought play to an early close, Rohit had gone from 23 off 55 balls to 117 off 164. That's 94 runs off his last 109 balls. His partnership with Rahane had swelled to 185 in 42.3 overs, and the events of the morning session were a distant memory to the noisy weekend crowd.

The ball, which South Africa's quicks had scuffed up on one side with some artful cross-seam bowling, was just beginning to reverse, however, and a fresh Rabada will probably steam in as soon as India's innings resumes. With India playing five bowlers, 224 for 3 may not yet be an entirely secure position. The next chapter of Rohit and Rahane v Rabada could be just as gripping as the ones we've already witnessed.