Kusal Mendis scored a fluent half-century to keep Sri Lanka's hopes of chasing a record 388 alive on day four of the one-off Test against Zimbabwe on Monday.
The hosts were 3-170 at stumps, with Mendis (60) batting alongside Angelo Mathews (17) at Colombo's R. Premadasa Stadium.
Quick Single: England v South Africa scorecard
Sri Lanka's highest-ever successful run chase was against South Africa in 2006, when they achieved their 352-run target in Colombo.
Zimbabwe skipper Graeme Cremer dented the hosts with his leg-spin, claiming the important wickets of Upul Tharanga (27) and new SL captain Dinesh Chandimal (15).
Opener Dimuth Karunaratne was bowled by left-arm orthodox spinner Sean Williams for 49 as the visitors persisted with an all-spin attack in the 48 overs bowled in the innings so far.
Mendis, who fought off hamstring trouble in the final session of play, put together an unbeaten 37-run stand with Mathews to take the delicately poised Test into its final day.
Zimbabwe were earlier bowled out for 377 in the second session, with Sikandar Raza (127) top-scoring for the visitors with his maiden Test century.
Cremer was the last man out for 48 off left-arm spinner Rangana Herath, who returned figures of 6-133 to take his match tally to 11 wickets – the eighth 10-wicket haul of his career.
Quick Single: Unassuming Herath claims more history
The Pakistan-born Raza steered the team's middle and lower order to help his side accumulate another 318 runs after being reduced to 5-59 on day three.
Raza's 144-run partnership with Malcolm Waller (68) was the highlight of the Zimbabwe innings after the duo resumed on the overnight score of 252-6.
Zimbabwe are seeking their first-ever Test win against Sri Lanka, who are looking for redemption under new Test captain Chandimal.
He took over from Mathews, who resigned after calling the one-day series loss a "hard pill to swallow".