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.
|Cardiff continue to ´pray´ for Sala|
|West Ham fined over Burnley clash chaos|
|Knicks star Enes Kanter frustrated by reduced role|
|Kvitova getting back to her best, says Barty|
|Kvitova revels in first semi of ´second career´|
|Messi´s the best player in every world – Boateng dismisses past Real Madrid comments|
|Thunder frustrations continue against Renegades|
|Alonso vows to clear name in tax fraud case|
|Classy Nadal downs Tiafoe to set up Tsitsipas semi|
|Hoedt leaves Southampton for Celta Vigo on loan|
|Melbourne City 4 Western Sydney Wanderers 3: Hosts edge thriller with two goals in last six minutes|
|Wilder won´t even pick up the phone - Hearn not hopeful of AJ bout|
|Sala was on board missing plane, say French authorities|
|Arsenal´s Bellerin out for season with ACL rupture|
|Gatland waiting on ´concrete´ offers|
|Ronaldo accepts prison sentence and €18.8m fine for tax fraud|
|Tsitsipas: It was vital to back up Federer win|
|Awesome Kvitova ends Barty´s home run in Melbourne|
|CA rejects Thunder appeal for full points in abandoned Heat clash|
|Emiliano Sala: Concerns grow for Cardiff striker after plane goes missing|
|Harden unimpressed with refs in Rockets´ 76ers disappointment|
|Ronaldo arrives for sentencing in tax fraud case|
|Record-breaking evening ´one of those nights´ for Warriors star Thompson|
|Hazard still interested in Real Madrid but won´t rule out Chelsea stay|
|Collins moves past Pavlyuchenkova, into Australian Open semis|
|Kohli makes history with ICC awards sweep|
|Thompson sets NBA record with 10 straight made three-pointers to open game|
|76ers hand Rockets largest loss of season, Harden scores 37 points|
|Tsitsipas overcomes Bautista Agut to continue Aus Open run|
|Barcelona move a ´dream come true´ for Boateng|
|Rams coach McVay on Gurley: I´ve got to get him more opportunities|
|Butler´s sprained wrist not expected to keep him out ´long term´|
|Saints owner Benson will ´aggressively pursue changes in NFL policies´|
|Levante to take Copa case to CAS|
|It can happen – Allegri plays down Ronaldo penalty miss|
|Mavericks´ Doncic becomes second-youngest player to record triple-double|
|Yankees send Sonny Gray to Reds|
|Ashley Cole reunited with Frank Lampard at Derby County|
|Arnold ready to mix things up in 2019 Asian Cup quarter-finals|
|Arum: Joshua desperately needs to fight in the United States|
|South Korea v Bahrain: Bento optimistic of continuing unblemished campaign|
|Bolton Wanderers 0 West Brom 2: Baggies bounce up to third after tennis ball protest|
|Confident Moeen ready to shine for England in the Caribbean|
|Juventus 3 Chievo 0: Allegri´s men cruise despite Ronaldo penalty save|
|Boateng completes shock Barcelona switch|
|United Arab Emirates 3 Kyrgyzstan 2 (after extra time): Khalil penalty sets up Socceroos showdown|
|West Indies add Drakes to new-look coaching team|
|Barcelona is a huge opportunity – Boateng confirms shock move is close|
|Donnarumma wishes Higuain luck ahead of expected Chelsea switch|
|Qatar v Iraq: Katanec anticipating ´huge challenge´ in last 16|
|Nuno hit with FA misconduct charge for pitch celebration|
|Furious Carreno Busta and Zverev bow out, Djokovic marches on|
|#NotMartinFromWakefield – Siewert shows viral sensation the door|
|Djokovic feeling the strain after late-night Medvedev battle|
|Henderson sidelined again ahead of Six Nations|
|Australia 0 Uzbekistan 0 (aet, 4-2 on penalties): Ryan heroics see holders hobble onwards|
|Halep exit leaves four-way fight to be crowned number one at Australian Open|
|Super Bowl-bound Rams set for London return, Chiefs to face Chargers in Mexico|
|Huddersfield appoint Siewert as Wagner´s replacement|
|Genoa 0 AC Milan 2: Borini and Suso step up with Higuain left out|
|McTominay signs new Manchester United contract|
|Pizzi to stand down after Saudi Arabia elimination|
|Boateng closing in on shock Barcelona switch - reports|
|Catalans to defend Challenge Cup after resolving RFL dispute|
|Djokovic wears down Medvedev to reach last eight|
|Mouratoglou: I knew ´loyal´ Serena would not fire me after US Open turmoil|
|Barcelona B defender Wague accuses Ejea fans of racist abuse|
|I felt like I had been hit by a train - Halep upbeat despite losing Serena battle|
|Arsenal confirm Mislintat departure|
|Icardi will renew, 100 per cent - Wanda Nara offers latest Inter assurance|