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.
|Wilshere would have stayed at Arsenal under Wenger|
|Mahomes stars again as Chiefs crush Bengals|
|Bolt must accept ´much less´ to join Mariners, says A-League chief|
|Klopp compares Liverpool to dog without favourite toy|
|Young leads Hawks to first win, Thunder fall in Westbrook´s return|
|Spalletti hits out at physical Milan – I had three players asking to be replaced|
|Cowboys, Ravens lose after missed kicks in final seconds|
|Hernangomez secures Nuggets´ win over Warriors with last-second block|
|Hasler returns to Manly on three-year deal|
|Sarri: Chelsea fans must respect Mourinho|
|Ronaldo learnt from Scholes – Pjanic praises Juventus star|
|CA dismisses spot-fixing claims|
|WATCH: Will Ferrell leads chants with LAFC fans|
|MLS Review: Galaxy on track for play-offs as Timbers, DC clinch spots|
|Elliott secures win at Hollywood Casino 400|
|Thunder´s Westbrook makes season debut against Kings|
|Saints beat Ravens after Tucker misses extra point|
|Rondo, Paul and Ingram banned after Lakers-Rockets fight|
|Saints QB Brees reaches another historic milestone|
|Biglia: VAR should have checked Nainggolan tackle|
|Gattuso not blaming Donnarumma for derby defeat|
|Seventh in Mexico will secure Hamilton´s fifth world title|
|Rooney fires DC United into MLS play-offs|
|Alonso slams ´amateur´ F1 rivals after latest crash|
|Spalletti fears lengthy Nainggolan absence|
|To the Max! Verstappen destroyed shoe fending off Hamilton|
|Icardi delight after Donnarumma error gives him another derby winner for Inter|
|Guardiola: Versatility the key for Stones|
|Vettel frustrated as mistakes continue to hamper title challenge|
|ECB refutes spot-fixing claims against England players|
|I thought we would do better - Hamilton queries Mercedes strategy|
|Inter 1 AC Milan 0: Icardi settles derby with dramatic late winner|
|Hamilton denied title party as Raikkonen wins in Austin|
|Patriots RB Michel out against Bears with gruesome knee injury|
|Kohli hails Rohit partnership after comprehensive India victory|
|Silva downplays his role after Everton super subs seal victory|
|Injured Bairstow out of final white-ball matches in Sri Lanka|
|Pliskova feeling confident after impressive start in Singapore|
|Big-hitting Imrul rescues Bangladesh in opening ODI|
|Leinster suffer late defeat at Toulouse, Newcastle snatch dramatic victory|
|Chargers pip Titans to dramatic London win|
|Everton 2 Crystal Palace 0: Substitutes Calvert-Lewin and Tosun clip Eagles´ wings|
|Thunderstorms push Andalucia Valderrama Masters into reserve day|
|Edmund masters Monfils to claim maiden singles title|
|Kohli and Rohit fire India to comprehensive ODI win|
|Manchester United didn´t play - David Luiz blasts Mourinho tactics|
|Svitolina out to silence ´haters´ in Singapore|
|Emre Can facing surgery on thyroid problem|
|Tsitsipas claims maiden ATP crown in Stockholm|
|Mariners boss Mulvey knows nothing of Bolt contract offer|
|WATCH: Vinicius Junior scores free-kick - then sees red!|
|Gronkowski ruled out of Bears clash|
|Khachanov enjoys home comforts with comprehensive Kremlin Cup win|
|Isner wants Wimbledon tie-break rule named after him|
|Hummels lauds ´outstanding´ Lewandowski|
|Liverpool´s defensive improvement no accident – Gomez|
|Pliskova overpowers defending champion Wozniacki in Singapore|
|Marquez dislocates shoulder celebrating MotoGP title|
|Henry taking positives from opening Monaco defeat|
|A-League Review: Mariners held as Bolt considers move|
|Dominant Svitolina ends Kvitova hoodoo in Singapore|
|Pereira warns Juventus to expect ´pumped up´ Manchester United|
|D´Antoni backs NBA to ´sort out´ Lakers-Rockets brawl|
|Mixed feelings for champion Marquez after Dovizioso crash|
|Bolt offered contract by Central Coast Mariners|
|Anthony accuses Rondo of spitting after Lakers-Rockets brawl|
|Martial insists he has good relationship with Mourinho|
|Bautista to replace Lorenzo at Phillip Island|
|Emery wanted Lacazette at Paris Saint-Germain|
|Wallabies centre Hodge suffers fractured ankle|