Dimuth Karunaratne ploughed a lone furrow for Sri Lanka as South Africa took charge on the opening day of the first Test in Galle.
The opener carried his bat on Thursday as the hosts struggled to find any rhythm after opting to make their opponents bowl, Karunaratne finishing 158 not out as Sri Lanka were dismissed for 287.
Plenty of his partners made starts but could not push on, and Sri Lanka's total would have been even less competitive had last man Lakshan Sandakan not added a timely 25.
Kagiso Rabada proved South Africa's main threat with 4-50, while there was also a wicket for the returning Dale Steyn.
Left-arm chinaman Tabraiz Shamsi contributed 3-91 in his second outing as Sri Lanka toiled, only the impressive Karunaratne scoring big on a pitch that is expected to turn more and more as the game goes on.
Sri Lanka finished the day on a high, though, as Rangana Herath took advantage of the early spin to remove Aiden Markram before the close, South Africa finishing 4-1 at the beginning of their reply.
Stumps, Day 1: SA 4/1 after 4 overs. Elgar 4*, Maharaj 0*, trail by 283. Last wicket: Markram 0.— Cricket South Africa (@OfficialCSA) July 12, 2018
SL 287. Rabada 4/50, Shamsi 3/91, Philander 1/28, Steyn 1/54. #SLvSA #ProteaFire pic.twitter.com/r6uPlFI142
The initial signs looked positive for Sri Lanka as Karunaratne and Danushka Gunathilaka made a steady start, only for Rabada to find a beautiful line outside off stump to have the latter caught behind.
Dhananjaya de Silva helped push the score on to 70-1 but four quick wickets saw the hosts slump to 119-5 – Rabada and Steyn doing the damage as the Proteas' seamers found a good length.
Karunaratne kept his patient, watchful innings ticking over while panic ensued around him, bringing up his half century off 82 balls with a quick single.
He survived a scare soon after as Markram dropped him at short leg, and slowly pushed towards an eighth Test century.
A straight drive to the boundary off Shamsi took Karunaratne to three figures but by then Sri Lanka were eight wickets down and facing an uphill struggle to post a credible total.
The Karunaratne show! @IamDimuth carries his bat with 158*, the fourth Sri Lankan to do so in Test cricket, as the hosts are dismissed for 287 on day one in Galle.#SLvSA scorecard https://t.co/iKZgIHlw9a pic.twitter.com/XdTawzE1Hg— ICC (@ICC) July 12, 2018
Stand-in captain Suranga Lakmal and Sandakan gave him much-needed support for the final two wickets, Sri Lanka adding 63 as Karunaratne reached 150 for the fourth time in his career.
Eventually Sri Lanka's resistance came to an end as Shamsi had Sandakan stumped, but it left South Africa with a tricky four-over spell to navigate.
Markram was unable to do so as Herath drew him forward and found an edge that Angelo Matthews gobbled up at slip, but it was a rare disappointment on a productive day for the tourists.
|Mickelson calls Tiger the greatest of all time|
|Durant fined $25,000 for using inappropriate language|
|Fizdale isn´t concerned about Knicks´ losing streak|
|No particular concern for Mbappe – Deschamps|
|PSG team-mate Choupo-Moting hopes Neymar injury is not serious|
|McLeish marvels at stylish Scotland´s promotion success|
|Draw proves Poland can play well without Lewandowski – Brzeczek|
|Giggs: Wales let themselves down|
|Sarachan ´moved USA forward´ in interim spell|
|Mickelson lays $200,000 bet with Woods for first hole|
|Dolphins QB Tannehill to start against Colts|
|Murcia edge out Banvit, Bonn crush Opava|
|Neymar injury not serious, says doctor|
|Mancini: Italy ahead of schedule|
|France 1 Uruguay 0: Giroud hits the spot after Mbappe injury blow|
|Portugal 1 Poland 1: Milik penalty salvages precious point as Danilo sees red|
|Italy 1 United States 0: Politano snatches late winner for Mancini´s men|
|Scotland 3 Israel 2: Forrest hat-trick seals Nations League promotion|
|Brazil 1 Cameroon 0: Richarlison fills Neymar´s boots as skipper suffers injury|
|France & PSG star Mbappe suffers shoulder injury|
|Albania 1 Wales 0: Gunter´s night spoiled by Balaj|
|Leeds and Manchester United to meet in friendly|
|Outspoken Smith leaves Cavaliers|
|PSG star Neymar injured for Brazil|
|Juventus midfielder Can back in training after surgery|
|Rams-Chiefs rollercoaster was the NFL´s modern-day masterpiece|
|Ronaldo an AC Milan target in 2017, confirms Fassone|
|Farah could get back on track at Tokyo Olympics|
|PSG still waiting on Alves and Kurzawa|
|Atalanta reject Gasperini to AC Milan speculation|
|Edmonton Oilers name Hitchcock new head coach|
|JR Smith on Cleveland Cavaliers: Tanking ´was always the plan´|
|Chester signs new Wakefield deal|
|F1 Raceweek: Countdown on to Alonso farewell|
|Rain disrupts Lorenzo´s Honda debut|
|VAR a possibility for Champions League knockout rounds|
|FFP vulnerable in areas, says UEFA president Ceferin|
|Sri Lanka draft in uncapped Peiris to replace Dananjaya|
|Coman back in Bayern training but Lewandowski has knee injury|
|Qalandars land De Villiers in PSL draft, Smith second pick|
|F1 changes helped less talented drivers on the grid - Alonso|
|Agnelli: No super league talks since 2015|
|I hope from now on it only gets better - Floersch update on horror crash|
|Calf injury rules Ashton out of Australia match|
|Halfpenny to miss South Africa clash|
|Hard for Lazio to hold on to Milinkovic-Savic, says Lotito|
|Australia´s next generation pay tribute to retiring Cahill|
|Bairstow pushing hard for Test recall|
|Cane eyes 2019 Super Rugby return after neck break|
|Van Dijk finds time to console referee during Dutch delight|
|Cahill sheds tear at end of phenomenal Australia career|
|WATCH: Pelicans coach Gentry interviews himself|
|Where does Chiefs-Rams classic rank among NFL´s highest-scoring matches?|
|Australia 3 Lebanon 0: Boyle bags brace on Cahill farewell|
|Guendouzi underlines desire to represent France|
|I might need a couple of drinks to relax after that! - Rams coach McVay|
|Juventus´ Alex Sandro has Premier League ambition|
|Ederson taking goalkeeping to another level, says City hero Weaver|
|Ceferin dismisses "super league" plans as fiction|
|Rams defeat Chiefs in one of the highest scoring games in NFL history|
|Kemba Walker leads Hornets to win over Celtics|
|Gomez praises ´top player´ Van Dijk, Stones|
|Cricket Australia to maintain Smith, Warner ball tampering bans|
|Brazil´s Tite encouraged by Neymar captaincy|
|Holmes set for NFL switch after Cronulla release|
|Dier encourages English youngsters to follow Sancho´s lead|
|Southgate promises further changes to England squad|
|Jones sceptical over Pocock injury|
|Sane encouraged despite Germany´s ´annoying´ Nations League draw|
|Character got Netherlands through, says Koeman|