Sri Lanka was set a difficult 352-run target to win the second cricket Test on Monday after Muttiah Muralitharan took seven wickets to restrict South Africa to 311 in its second innings.
The highest run chase Sri Lanka has achieved in a Test was 326 against Zimbabwe at the Sinhalese Sports Club nine years ago. The hosts got off to a bad start when opener Upul Tharanga was dismissed without scoring as Makhaya Ntini struck in his second over.
But Sanath Jayasuriya and Kumar Sangakkara negotiated the pre-lunch session and guided Sri Lanka to 42 for one at the interval.
Jayasuriya was on 13 and Sangakkara was unbeaten on 30. Sri Lanka would have been chasing a much tougher target if not for Muralitharan, who claimed 7-97 in the second innings and ended the match with 12 wickets.
It was the 56th time the master spinner has taken five wickets or more in an innings and the 18th occasion he has taken 10 or more in a Test match - including his last four Test matches.
Muralitharan lifted his career tally to 657 Test wickets, 28 behind Shane Warne's alltime record.
With South Africa looking for quick runs, Muralitharan accounted for all three wickets to fall in the morning.
He had left-hander Nicky Boje caught behind by Prasanna Jayawardene and had Dale Steyn adjudged lbw in the next over. Then, Tillekaratne Dilshan took a reflex catch at short leg to remove Mark Boucher and give Muralitharan his seventh wicket.
The South Africans added 54 to their overnight total. Boucher scored 65 in 102 balls with seven fours and two sixes. South Africa has been in front since making 361 in its first innings and taking a 40-run first innings lead after dismissing Sri Lanka for 321 in reply.
But with five sessions remaining and the pitch not offering much for the seamers, the match is up for grabs. South Africa needs a win here to square the two-match series after its innings defeat last week.