Sri Lanka are closing in on an emphatic series whitewash after South Africa were flummoxed by the spinners once again on day three of the second Test in Colombo on Sunday.
Dimuth Karunaratne fell 15 short of a second century in a prolific series for the in-form opener and Angelo Mathews made an excellent 71 before Sri Lanka declared on 275-5, setting the tourists a highly improbable 490 to salvage a 1-1 draw.
Rangana Herath and Akila Dananjaya took two wickets apiece, the South Africa batsmen bamboozled by sharp turn and bounce as they closed on 139-5 - their highest total of the series.
Theunis de Bruyn dug in for an unbeaten 45 and Dean Elgar went for 37 after riding his luck, birthday boy Dilruwan Perera twice over-stepping when he dismissed the left-hander and also dropping him early on.
Karunaratne and Mathews pressed on after Sri Lanka resumed on 151-3, piling on the runs as the tired Proteas bowlers toiled.
Dale Steyn was unable to become his country's leading Test wicket-taker outright, Karunaratne taking his tally of runs in an outstanding series to 356 before he edged Lungi Ngidi behind.
That was the only wicket to fall in the morning session, former captain Mathews attacking spinner Keshav Maharaj (3-154) and finding the ropes seven times as Sri Lanka's lead mounted.
Maharaj claimed magnificent figures of 9-129 in the first innings and was rewarded for bowling 81 overs in the match with a 12th wicket when Mathews was taken by Faf du Plessis at first slip.
Roshen Silva added an unbeaten 32 before Suranga Lakmal declared and the Proteas were 23-1 when Aiden Markram was trapped in front sweeping Herath (2-54) after being dropped by Mathews in the slips.
Dilruwan put Elgar down running back from square leg and he offered another gift on his 36th birthday by over-stepping when he bowled the same man.
Elgar was already back in the dressing room when he was given another reprieve as replays showed no part of Dilruwan's foot was behind the line as he was snared lbw on 23, but he was finally dismissed after being struck in front early in the evening session.
Herath removed Hashim Amla's off stump and Dananjaya (2-35) was on a hat-trick after accounting for Du Plessis and Maharaj, but De Bruyn and Temba Bavuma showed resistance to keep Sri Lanka waiting for what should be another crushing victory.
|CAF Champions League Review: Wydad, Al Ahly & TP Mazembe qualify|
|Stephen Curry wants to finish his career with Warriors|
|Hazard among Europe´s best but can improve, says Sarri|
|Tigers boost top-two hopes, Giants close in on fourth|
|Birmingham City 0 Swansea City 0: Monk´s men held despite dominance|
|Inter taking legal action against Tebas over Modric transfer comments|
|Serie A transfer round-up: Zaza joins Torino, Parma sign Gervinho|
|Roma chief Pallotta makes light of De Laurentiis claim|
|Federer starts double-header by seeing off resilient Mayer|
|Ospina joins Napoli on loan from Arsenal|
|Klavan completes Cagliari switch|
|Djokovic holds out against Dimitrov as Raonic awaits|
|New dates confirmed for postponed Serie A fixtures|
|Halep breezes past Barty to set up Tsurenko clash on same day|
|Olesen unable to capitalise on strong start as Jamieson, Waring go clear|
|Hoffenheim tie Kramaric to four-year deal|
|Mina to miss Southampton clash while Gomes is ´weeks´ away|
|Barcelona coach Valverde dismisses Pogba speculation|
|Valverde not prioritising Champions League over defending Barcelona´s LaLiga title|
|Allegri thanks outgoing Juventus icon Marchisio|
|Pants display from Beef? Johnston forced into change of trousers in Sweden|
|Tour champion Thomas has Welsh velodrome named in his honour|
|Gloucester surprised and disappointed by RFU´s swift Cipriani charge|
|Storm skipper Smith´s back injury not ´too serious´|
|Spurs fixture switch doesn´t appeal to Guardiola|
|Brazil call up Andreas Pereira & Arthur but omit Man City stars|
|Mbappe returns to PSG squad, Kehrer set for debut|
|No Messi in Argentina squad as Simeone wins first call-up|
|England man Roy embarrassed by self-inflicted facial injury|
|Atletico Madrid fined for breaching third-party regulations|
|Cipriani charged by RFU after common assault conviction|
|No contact, no negotiation - Leonardo denies AC Milan deal for Milinkovic-Savic|
|Kovacic set for Chelsea debut against Arsenal|
|Fury´s father restrained as Wilder crashes Pianeta weigh-in|
|Kohli and Bumrah fit for win-or-bust Test|
|Stokes ready and desperate to help England, says Root|
|Salah, Mane and Firmino not in competition says Klopp|
|Darmian staying at Manchester United, says Mourinho|
|Guardiola cites fatigue as factor for stricken De Bruyne|
|Kovac approves Rudy departure from bloated Bayern midfield|
|Klopp insists no player leaves without his approval amid Klavan rumours|
|Real Madrid complain to FIFA over Inter´s alleged Modric approach|
|Mourinho ´has never been so happy´ with unsettled Pogba|
|Manly implode amid Barrett uncertainty, Storm´s Smith injured|
|Sarri certain Hazard is staying at Chelsea|
|Liverpool, Champions League, Manchester derby - The matches De Bruyne will miss due to injury|
|Campbell joins Frosinone from Arsenal on permanent deal|
|Schalke sign Lille´s Mendyl to end left-back hunt|
|Stokes back in England team as Curran drops out|
|Ronaldo doesn´t guarantee Juventus the title, warns Allegri|
|Tuchel keen to guide PSG star Mbappe after World Cup heroics|
|Yuri: I can see Neymar joining Real Madrid|
|Milan pounce for Castillejo as Bacca joins Villarreal permanently|
|De Bruyne to miss three months for Manchester City|
|Manchester City talent Arzani completes Celtic loan|
|I know how precious my career is, says regretful Cipriani|
|Paulo Bento named new South Korea coach|
|Milan complete Laxalt deal|
|Poyet suspended by Bordeaux after outburst against board|
|Tuchel will let Neymar and Cavani settle penalties themselves|
|Hooper: We´re ready, bring on the All Blacks!|
|Outstanding Australia deserve our respect - Read|
|Dragons´ Widdop set for Finals return|
|Jamshed found guilty of corruption and banned for 10 years|
|Bennett will not be sacked, insist Broncos|
|Marchisio leaves Juventus|
|The Breakdown: A statistical look at round one of the Rugby Championship|
|Durham sign Bancroft for 2019|
|Wolfsburg to fine Hinds after training no-show|
|Rugby Championship 2018: Team-by-team guide|