At the close of day two, Haq was unbeaten on 74 and Saud Shakeel 13 as the home team need another 96 runs to avoid the follow-on.
Pakistan started chaotically, losing opener Abdullah Shafique (19), Shan Masood (20) and skipper Babar Azam (24) before the Haq-Shakeel stand added 55 runs for the unbroken fourth wicket.
In contrast, New Zealand’s tail wagged furiously, with Matt Henry (68 not out) and Ajaz Patel (35) both scoring Test-bests as they added an invaluable 104 runs for the last wicket.
The two-match series is tied after the first Test, also in Karachi, ended in a draw.
The National Stadium pitch offered little to the bowlers, but Pakistan did themselves no favours by having skipper Azam, the team’s best batsman, run out.
Haq drove Bracewell towards mid-wicket and saw Azam stranded at his end attempting a third run.
But Haq took charge with his seventh half-century — even as Shakeel needed 42 balls to get off the mark at the other end.
Earlier, Shafique was the first Pakistan wicket to fall when he pulled pacer Henry’s short delivery straight to the hands of Ajaz Patel and Masood gave a catch off Patel.
Henry and Patel had combined earlier to lift New Zealand from 345-9. Henry smashed eight boundaries and two sixes in his knock, improving his previous high against Australia at Christchurch in 2016 by six runs.
Patel also bettered his previous Test-best of 20 — against England last year — before he was the last wicket to fall, caught off spinner Abrar Ahmed.
Naseem took the day’s first wicket when he bowled Ish Sodhi for 11 with a ball that cut through sharply.
Blundell, who was 30 overnight, reached his fifty with a boundary and a single off Ahmed. He hit six boundaries in his 51 before being bowled by Ahmed.
The spinner then had Tim Southee stumped for ten, before Henry and Patel prolonged the innings, helping New Zealand cross the 400-mark.
Ahmed was the pick of the bowlers with 4-149, while Naseem Shah (3-71) and Agha Salman (3-75) were the other successful bowlers.