South Africa began to break down Sri Lanka's resistance late on the second day of the second and final test on Monday to leave the tourists an uphill battle to save the match and the series.
Sri Lanka was 150-4 in its second innings at stumps for a lead of only five runs with only one more recognized batsman to come. Its hopes of setting South Africa a competitive target and having a chance of a series-leveling win at the Wanderers probably lay with captain Dimuth Karunaratne, who was 91 not out in a gritty last stand for his team.
Only one other batsman managed to hold off South Africa's pace bowlers on a Wanderers pitch that has been playing typically tough for batsmen. In just two days, 24 wickets have fallen.
Lahiru Thirimanne, called into the team amid Sri Lanka's injury emergency, made 31 and fought alongside his captain in a partnership of 82.
But Thirimanne's dismissal to an edge down the legside off fast bowler Lungi Ngidi heralded a burst of Sri Lankan wickets.
Kusal Mendis went for his second duck of the test in Ngidi's next over, also to a catch down the legside to wicketkeeper Quinton de Kock, although this one saw de Kock dive full stretch and clutch the chance with both gloves.
Debutant Minod Bhanuka came and went for 1 and Sri Lanka's renewed positivity following Vishwa Fernando's stellar bowling performance earlier in the day was cut short.
South Africa already leads the series 1-0 and is desperate for its own revival having not won a test series in two years.
Sri Lanka does have the advantage of the Johannesburg pitch, which will likely be especially difficult for South Africa to bat on last. Sri Lanka does need plenty more runs, though, to make it a game.
The Sri Lankans also have good memories to call on, having won their last series in South Africa in 2019 against all expectations, and against all odds when facing a seemingly desperate situation in the last game.
On that occasion, Kusal Perera hit a 153 not out to snatch victory. This time, Perera was the first wicket to fall for Sri Lanka in its second innings. Ngidi bowled him for 1 to spark joyous celebrations from the South African fielders at the exit of the Sri Lankan player that has frustrated them the most this series.
South Africa also began the day in a strong position, 148-1 in its first innings and already closing in on Sri Lanka's tame 157 all out batting first.
Dean Elgar made 127 for his 13th test century and put on a stand of 184 with Rassie van der Dussen (67) to take South Africa into the lead, and seemingly in position to make the advantage a big one at 218-1.
Sri Lanka found its fight in the hour before lunch and Dushmantha Chameera's success in getting Elgar to edge to first slip straight after a mid-session drinks break sparked another of those clutches of wickets. Van der Dussen followed the very next over and from 218-1, South Africa lost nine wickets for 84 runs to be all out for 302.
Fernando was instrumental in reining in South Africa, using the pitch to good effect to run through the middle and lower order and give Sri Lanka hope with his 5-101.
Fernando's career-best figures were magnified by Sri Lanka's personnel problems. It was already missing two experienced bowlers through injury before the series, and lost two quick bowlers to injury in the first test. Fernando, playing in just his 10th test, is the most experienced in Sri Lanka's attack at the Wanderers and rose to the occasion.
So did skipper Karunaratne, who battled to the close unbeaten and in sight of a century. Karunaratne's 91 had come off 116 with 17 fours. He had Niroshan Dickwella with him on 18 not out.