Stoneman went on to 60, the highest of his five test half centuries, but he lived dangerously. He was dropped on 48 by Ross Taylor, one-handed at slip, and 57, by Tim Southee, a more difficult chance at slip, both off luckless Colin de Grandhomme.
Stoneman also survived a DRS review for a catch behind off Neil Wagner on 35. His luck ran out when wicketkeeper BJ Watling leapt high to his left to clutch an edge off Southee.
Vince played some elegant shots in passing 50 for a third time. At 55 he was involved in his fourth DRS moment in the match, and won his third reprieve off a legside catch by Watling from a Southee delivery which brushed his leg.
He fell at 76 to a fine slip catch by Taylor, to his left, off Trent Boult.
Root and Malan avoided a late runout mishap when the captain sent the lefthander Malan back and he just made his ground, and Malan survived a DRS appeal for a catch at the wicket off legspinner Ish Sodhi on 16.
Earlier in the day, New Zealand had got 86 runs for their last four first innings wickets before lunch.
Watling added just eight to his overnight 77 before being bowled by a lovely swinging delivery from Jimmy Anderson; Sodhi didn't last long, becoming Stuart Broad's fifth wicket, and wicketkeeper Jonny Bairstow's fifth catch of the innings.
Southee completed his fourth test 50, and first since 2014 – and for the second time had five wickets or more and a 50 in the same test – before Anderson bowled him.
Wagner and Boult added an entertaining 39 for the last wicket before Broad got rid of Boult to finish the innings with six for 54. Anderson took four for 76.
The middle session belonged to England. The only dismissal of the period had been senior batsman Alastair Cook, whose miserable series with the bat ended with another failure.
On 14, he was caught behind off left armer Boult. The ball moved away a fraction and Cook followed it.
He scored 23 runs in his four innings, his worst return from a series in his glittering career. Boult took his wicket in all four innings in the series.