Despite a mid-innings wobble, Matt Prior (82) and Kevin Pietersen (73) delivered with the bat for the tourists and Stuart Broad then took two for 18 in the final session to leave New Zealand trailing by 399 runs.
Kane Williamson was unbeaten on 32 and Dean Brownlie eight not out at stumps on a wicket that came to life in blustery, overcast conditions and served up 11 wickets in the second day after yielding just two on the first.
The highlight of the day was a defiant 82 off 99 balls from Matt Prior, who went on the attack after England looked in danger of squandering the foundation built by centurions Jonathan Trott and Nick Compton on the first day.
England started the day at the Basin Reserve on 267 for two and were reduced to 374-7 after lunch before Prior snuffed out a New Zealand fightback led by spinner Bruce Martin, who ended with figures of 4-130.
Prior racked up an 83-run partnership with Steve Finn (24), who cemented his reputation as a stubborn lower-order performer after a half century in the first Test in Dunedin.
Pietersen also contributed after two failures in the opening Test, bringing up the 30th half-century of his Test career.
New Zealand's bowlers, who toiled for little reward on an unresponsive first-day wicket, made the perfect start when Trott departed without adding to his overnight score of 121.
Trott carelessly prodded at the first ball he faced, edging Trent Boult's delivery to keeper BJ Watling.
Martin, bowling into the wind, then dismissed Ian Bell and Joe Root cheaply to offer the Black Caps some hope of containing England's lead.
Bell (11) charged down the wicket to Martin and smashed the ball skywards to Peter Fulton at cover, while Root (10) was deceived by a fuller ball which nicked the bat and was sharply taken by Watling behind the stumps.
After Pietersen's departure, Stuart Broad narrowly avoided playing the second ball he faced onto his stumps but faced only three more, with Boult coaxing an edge to Watling
Finn was out trying to drive Wagner and Prior found himself running out of partners, falling after attempting a reverse sweep to keep the runs ticking over, with Monty Panesar out for a duck to end the innings.
New Zealand made slow progress in reply after losing opener Fulton for one when he edged to Alastair Cook in the slips after trying to drive James Anderson.
Broad sent Hamish Rutherford on his way for 23 after another nick to Cook then clean-bowled Ross Taylor for a golden duck with his next ball, a straight delivery that slipped straight past the batsman's guard.