Skipper Kane Williamson smashed his fourth Test double-hundred while Henry Nicholls and Daryl Mitchell notched up centuries to fuel New Zealand's bid for a 2-0 series sweep in the second and final Test against Pakistan on Tuesday.

Williamson scored 238 and collaborated in a marathon 369-run partnership, a New Zealand record for the fourth wicket, with Nicholls, who made 157.

Williamson then allowed Mitchell to complete his maiden Test century before declaring New Zealand's first innings on 659-6.

Pakistan, which managed 297 in the first innings, finished the day three on 8-1, still 354 runs behind and staring at an innings defeat at Hagley Oval.

Syed Mushtaq Ali Trophy: COVID-19 scare in Bengal camp  

Pakistan could not make the most of the overcast conditions and the second new ball and Azhar Ali spilt a catch at gully to allow Nicholls to complete his seventh Test century.

Battling a calf strain, Nicholls decided to counter-attack, pulling and cutting until his dismissal after attempting a pull shot off Mohammad Abbas.

Williamson was rock solid at the other end and became the third New Zealand batsman, after Stephen Fleming and Ross Taylor, to score 7,000 Test runs.

IND vs AUS: KL Rahul ruled out of Border-Gavaskar Trophy with wrist injury  

Currently the top-ranked Test batsman, Williamson took a single off Shaheen Afridi to also equal Brendon McCullum's record of four Test double-hundreds by a New Zealand batsman.

Williamson shook hands with batting partner Kyle Jamieson and raised his bat in a muted celebration.

After batting for more than nine-and-half hours during which he hit 28 boundaries, Williamson played a tired shot and departed with scores of 251, 129, 21 and 238 in his last four Test innings.

IND vs AUS: Australia coach Langer says Warner 'very likely' for third Test  

"Pretty grateful to the skipper for giving me a couple of extra overs to try and get the job done," Mitchell, who made 102 not out, said afterwards.

"His knock was amazing today, 238 in a Test match is incredible."

Pakistan dropped several catches in the match and was equally sloppy with the ball conceding 64 extra runs.