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.
|Solskjaer to United: ´Ultimate super-sub´ understands our support, say fans|
|Jones and Humphreys to assist incoming Wales head coach Pivac|
|I have nothing to say - Mourinho muted on Manchester United exit|
|Gallen defiant amid Sharks crisis|
|Solskjaer to United: Cardiff stint not relevant to Old Trafford challenge, says Berg|
|Manchester United´s on-field results must improve to maintain commercial strength - sports finance e|
|Rashid and Carey inspire winning start for Strikers|
|Solskjaer to United: Phelan to continue Mariners role during coaching stint|
|Malone: Jokic an MVP contender|
|Solskjaer to United: Returning heroes - the hits and misses|
|Solskjaer to United: Ole´s best moments for United|
|Solskjaer to United: Club writing off two seasons with interim appointment - Fletcher|
|Allen´s LeBron block made statement - Atkinson|
|Solskjaer to United: Molde give blessing for their manager to take job on temporary basis|
|Dragons land Eels playmaker Norman|
|Black Caps tried everything - Williamson|
|Solskjaer to United: Red Devils´ interim boss in numbers|
|Solskjaer to United: Other Ferguson pupils who became teachers|
|Manchester United appoint Solskjaer until end of season|
|Kane a doubt for north London derby|
|Mourinho sacking changes things – Tuchel|
|Nets top Lakers in Brooklyn, extend winning streak to six games|
|LeBron on Lakers potentially acquiring Davis: That would be amazing|
|Rain helps Sri Lanka claim draw against New Zealand|
|Mourinho had to ´take the consequences´, says Klopp|
|Ausilio: Icardi has offer on table, won´t be sold to Juve|
|Chargers lead NFL Pro Bowl selections, Brees named NFC starting QB|
|Pro Bowl 2019: Chargers lead NFL with 7 selections, Drew Brees named NFC starting QB|
|Savea re-signs with All Blacks, Hurricanes|
|Flanagan facing de-registration as Sharks, Tigers cop huge fines|
|Napoli rejected £95m offer for Koulibaly amid United links – De Laurentiis|
|Kovac feels for axed United boss Mourinho|
|Rabiot, we do not need you – PSG fans respond to wantaway midfielder|
|Guardiola hails assured debut from Man City youngster Garcia|
|He´s very happy at Tottenham – Arsenal boss Emery wants Pochettino to reject Manchester United|
|Rams sign RB C.J. Anderson|
|Good luck with the Red Devils - Norway PM´s message for Solskjaer|
|Pogba was ´dancing on the grave´ of Mourinho - Neville|
|Solskjaer set to replace Mourinho after Man United gaffe|
|City signing Steffen up to Guardiola´s goalkeeper demands, says Berhalter|
|Mourinho is so strong - Guardiola backing for fallen rival|
|Mourinho? Ausilio dismisses Inter return after United sacking|
|Whyte needs to raise his game to beat Chisora again - Haye|
|Brussino leads late Tenerife rally as Venezia down Holon|
|Orleans 1 Paris Saint-Germain 2: Super sub Diaby sends holders through|
|Leicester City 1 Manchester City 1 (1-3 on penalties): Muric stands tall in poor shoot-out|
|Middlesbrough 0 Burton Albion 1: League One side reach semi-finals|
|Bologna 0 AC Milan 0: Bakayoko sent off as Inzaghi claims point against former side|
|Fortuna Dusseldorf 2 Borussia Dortmund 1: Bundesliga leaders suffer shock first loss|
|Rivera yet to make a call on sitting Panthers QB Newton|
|Pulisic would thrive in Premier League, but Berhalter expects Dortmund stay|
|Raptors coach Nurse fined by NBA for criticising referees|
|Solari ´loves´ struggling Real Madrid star Isco|
|Mourinho sacked: Pogba, Lukaku, Fred and his other Man United signings rated|
|Mourinho sacked: What does it mean for Manchester United players?|
|Ibrahimovic provides short-term pain, long-term gain for US - Berhalter|
|River Plate 2 Al Ain 2 (aet, 4-5 on penalties): Perez misses decisive spot kick|
|De Bruyne and Aguero back for City, surprise debut for Garcia|
|Uncapped Varun ´panicked a little´ after huge IPL deal|
|Replays scrapped for FA Cup fifth round|
|Pochettino readies big guns for Gunners|
|Ex-Wasps star Wade struggling with NFL transition|
|BCCI rejects ´baseless´ claims over Kohli-Paine ´banter´|
|Ibrahimovic re-signs with LA Galaxy for 2019|
|Mourinho sacked: Solari not worried for Real Madrid job|
|Mourinho sacked: 895 days and more than £700,000 in five-star luxury|
|ES Tunis 1 Guadalajara 1 (6-5 on penalties): Dhaouadi holds nerve to settle ill-tempered affair|
|Murphy lands permanent Tigers role|
|Mourinho sacked: Real Madrid´s Marcelo lauds ´great coach´ after United exit|
|Unadkat, Varun the top buys at IPL auction|