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.
|Ronaldo has nothing to prove, says Allegri|
|Federer shines as Europe hold narrow lead at Laver Cup|
|Astros, Yankees and Indians record dramatic wins|
|Pliskova too strong for Osaka in Tokyo final|
|Kyle Busch comes from behind to win again in Virginia|
|Dybala can play as a striker – Allegri|
|Pochettino never doubts ´special´ Kane|
|NASCAR results at Richmond: Kyle Busch comes from behind to win again in Virginia|
|McIlroy just worried about himself at Tour Championship|
|MLS Review: Atlanta stay clear of Red Bulls|
|Rose reminds everyone Woods has been here before|
|Cronk in doubt for Grand Final due to ´severe´ shoulder injury|
|Timberwolves sign Towns to extension|
|Hearn wants Wilder for Joshua, not ´un-entertaining´ Fury|
|Woods pleased with putting consistency|
|Ballon d´Or not a focus for Asensio|
|Man City star Mendy revels in Joshua triumph|
|Braves clinch first NL East title since 2013|
|I want Wilder, says Joshua|
|Inter must live on the edge to win, says jubilant Spalletti|
|Woods leads by three at Tour Championship|
|Bordeaux end Clermont´s perfect start, Zebo at double in Racing win|
|Lopetegui not worried about Courtois footwork|
|Joshua finds emphatic answer to Povetkin challenge|
|BREAKING NEWS: Brutal Joshua knocks out Povetkin in seventh round|
|Real Madrid can´t win 5-0 every week - Varane|
|Al Ahly 4 Horoya 0 (4-0 agg): Egyptian giants reach CAF Champions League semi-finals|
|Kings upset Warriors, Leinster batter Edinburgh|
|Son committed to Tottenham amid Bayern links|
|Simeone hails Atleti´s best LaLiga display of the season|
|Kovac: Bayern ´dominated´ Schalke in 2-0 win|
|Pochettino unimpressed with Tottenham´s tense finish|
|Campbell gains revenge as Price is halted by injury|
|Tottenham fatigue rumours are a myth, claims Rose|
|Widnes defiant after Super League relegation, Saints outclass Wolves|
|NFL must go back to college to eradicate the tie|
|Real Madrid 1 Espanyol 0: Asensio downs old club to earn narrow win|
|Sampdoria 0 Inter 1: Brozovic wins it late after VAR takes centre stage|
|Rudy takes blame for James goal in Bayern win|
|Tiger charges into four-shot lead|
|Players have given their lives to Burnley - Dyche|
|QPR 0 Norwich City 1: Pukki hits winner as hot streak continues|
|Nuno proud of Wolves character in Man United draw|
|Playing for England my dream, says in-form Maddison|
|Brighton and Hove Albion 1 Tottenham 2: Kane on target as Spurs issue firm response|
|Schalke 0 Bayern Munich 2: James and Lewandowski deliver another win|
|Getafe 0 Atletico Madrid 2: Lemar inspires routine win|
|Championship Review: Monk ruins Leeds´ unbeaten streak, McGinn screamer fails to save Villa|
|Bale benched for Real Madrid-Espanyol|
|Biggar fails to rescue Saints at Bath, Bristol and Wasps win|
|Zaha affected by back injury – Hodgson|
|Mourinho slams Manchester United attitude after Wolves stalemate|
|Herbert holds Portugal Masters advantage|
|Warnock blasts ´elementary´ Cardiff mistakes|
|Shaqiri substitution not easy for Klopp|
|Guardiola hopes for even more to come from Aguero|
|Fellaini accepts United closing gap to Premier League summit will be difficult|
|Klizan to face Thiem in St. Petersburg final, Bachinger shocks Nishikori|
|Klopp: Van Dijk injury not serious|
|Mourinho annoyed by Man Utd´s blunt attack in Wolves draw|
|Valverde not ready to consider Barca contract extension|
|Gattuso wary of wounded Atalanta as Higuain receives further advice|
|Burnley 4 Bournemouth 0: Rampant Clarets claim first Premier League win of the season|
|Crystal Palace 0 Newcastle United 0: Sakho misses sitter as Magpies remain winless|
|Cardiff City 0 Manchester City 5: Aguero celebrates new deal with goal in 300th game|
|Leicester City 3 Huddersfield Town 1: Comeback win eases pressure on Puel|
|Liverpool 3 Southampton 0: Salah ends goalless run as Reds make best Premier League start|
|Manchester United 1 Wolves 1: Moutinho stunner sees Red Devils falter at home again|
|Rashid, Hasan and Asghar fined by ICC|
|Barnsley game postponed after medical emergency|