Angelo Mathews struck a brilliant maiden international double-century to give Sri Lanka a healthy lead on day four of the first Test against Zimbabwe at Harare Sports Club.
Mathews spent 10 hours at the crease to make an imperious unbeaten 200 with support from Dhananjaya de Silva and Niroshan Dickwella, who each made 63 in the tourist's 515-9 declared.
Sri Lanka will resume on the final day looking to make quick inroads with the ball after Zimbabwe reached stumps on 30 without loss, trailing by 127.
Mathews had waited since December 2018 to reach three figures in the longest format, but brought up his 10th Test century early on the penultimate day after Sri Lanka resumed on 295-4.
Dhananjaya had a sixth Test half-century when he went through for a single after being struck on the glove by a Donald Tiripano, but a fifth-wicket stand of 98 ended when he drove Victor Nyauchi (3-69) to Prince Masvaure at mid-on.
That was the only wicket to fall in the morning session and the Zimbabwe bowlers endured more frustration after lunch as Mathews, dropped by wicketkeeper Regis Chakabva on 108, and Dickwella increased the lead.
Dickwella was put down by Sean Ervine on 45 and struck only three boundaries in his 15th Test half-century before being trapped lbw by Sikandar Raza, halting a stand of 126.
Raza (3-62) saw the back of Suranga Lakmal and Lasith Embuldeniya in consecutive deliveries, but Mathews went on to become the first Sri Lankan man for five years to score a Test double-hundred.
Kasun Rajitha's dismissal prompted Dimuth Karunaratne to declare, but Sri Lanka was unable to end the day on a high note as Masvaure and Brian Mudzinganyama saw Zimbabwe through to the close unscathed.