New Zealand opener Tom Latham flayed Sri Lanka's bowlers with an unbeaten 264 on Monday before the tourists' top order failed again, leaving them on the verge of a heavy first Test defeat in Wellington.
Latham walked off to a standing ovation at the Basin Reserve after carrying his bat and helping New Zealand to 578, a commanding first-innings lead of 296.
Seamers Tim Southee and Trent Boult then combined to remove Sri Lanka's top order, reducing them to 20 for three at stumps on day three.
Boult dismissed Danushka Gunathilaka on three, while Southee snared Dimuth Karunaratne for 10 and Dhananjaya de Silva for a duck, taking his tally for the match to eight.
The pair, along with short-ball specialist Neil Wagner, will be relishing the prospect of having two full days to attack Sri Lanka's misfiring batting line-up.
But the day belonged to Latham, who added steadily to his overnight total of 121, offering no chances to the frustrated Sri Lankans.
It was the sixth best Test score by a New Zealander and the highest this year by a batsman from any nation.
His innings, which lasted more than 11 hours, also continued a horror run at the Basin Reserve for Sri Lanka, where they have now conceded double centuries to four New Zealanders.
Latham said he always believed he was capable of producing such a performance but it was pleasing to achieve it on the international stage.
"These innings don't come around too often, so you have to enjoy the moment when they do," he said.
New Zealand skipper Kane Williamson helped the Black Caps reach their imposing total with a sparkling 91, while Ross Taylor and Henry Nicholls both reached 50.
Lahiru Kumara was the pick of a Sri Lanka attack that struggled on a flat wicket, taking four for 127.
Taylor was dismissed for 50 in the first over of the day after failing to add to his overnight score, thanks to a sharp catch from Dimuth Karunaratne.
SCORES IN BRIEF
SRI LANKA: First innings 282
NEW ZEALAND: First innings 578 all out (Raval 43, Latham 264 not out, Williamson 91, Taylor 50, Nicholls 50, de Grandhomme 49; Perera 2-156, Kumara 4-127, De Silva 2-54)
SRI LANKA: Second innings 20 for 3 (Karunaratne 10; Southee 2-7)