Sri Lanka look well placed to level their three-match series against South Africa after claiming a 426-run lead by the close of play on day three of the second Test in Durban.
The tourists were indebted to a 28th Test ton from Kumar Sangakkara - dropped on three by Proteas captain Graeme Smith in the first over of the day - and a second half-century in as many innings by brilliant debutant Dinesh Chandimal as they reached 256 for seven when bad light stopped play at Kingsmead.
South Africa won the opening Test by an innings and 81 runs in Centurion, but it now looks as though the series will be decided in Cape Town early in the new year.
Sri Lanka resumed this morning on seven for one, a lead of 177 after bowling their hosts out for 168 on day two, with rain forcing a delay to the start of play.
They very nearly lost Sangakkara immediately as he edged behind off Morne Morkel, but Smith was distracted by wicketkeeper Mark Boucher and fumbled.
Sangakkara took advantage to plough on and opener Tharanga Paranavitana struck successive boundaries off Morkel before debutant Marchant de Lange opened with a maiden over.
Morkel finally got some reward for his good line and length as Paranavitana's thick edge was well held by Ashwell Prince at fourth slip to leave the score at 20 for two, bringing Mahela Jayawardene to the crease.
He did his utmost to settle Sri Lanka down as he flicked a Morkel delivery through midwicket to the boundary.
Dale Steyn returned to the attack and almost accounted for Jayawardene, whose edge behind fell just short of the slips, before the same batsman took Sri Lanka's lead past 200 with another boundary.
However, he was gone for 14 as he padded up to a De Lange delivery. Sri Lanka reviewed the decision but the ball was bound for the top of the stumps and the tourists were now 44 for three.
First-innings centurion Thilan Samaraweera was the next man in and he played a risky nudge down to backward square leg which only just eluded the diving Hashim Amla, but he was able to bed down well with Sangakkara as the pair took Sri Lanka's second innings into three figures.
Sangakkara brought up his 50 off 102 balls with an angled drive down to third man off Morkel, which was going for four until Imran Tahir slid in to ultimately save two runs.
South Africa finally made another breakthrough as Tahir dismissed Samaraweera for 43, who edged the ball onto his pad and into his off stump to make it 138 for four.
Angelo Mathews made just three before he swiped at a Steyn bouncer and Boucher took a comfortable catch to give South Africa brief hope at 141 for five, but Sangakkara again brought stability to the tourists' innings.
His 12th four came up off Jacques Kallis to move him to 95, and he then progressed to 99 off the next ball with another boundary, flicking the ball to midwicket. He brought up the ton off 161 balls, striking two off the final delivery of the same Kallis over, and ended the session alongside Chandimal, who was 23 not out.
Chandimal set the pace after tea and survived a run-out chance when AB de Villiers was off target with his shy at the stumps, conceding four overthrows. Chandimal made it two half-centuries from as many Test innings in the 65th over but was gone for 54 when he edged a Steyn ball behind.
Sangakkara's wicket was finally claimed by Tahir as the Sri Lanka batsman holed out to Smith at deep mid-on for 108, having faced 190 balls. Rangana Herath (five not out) and Thisara Perera (six not out) came together before bad light forced the teams off in the 71st over.