England were 251 for four in their second innings, 82 runs ahead with six wickets standing, at lunch on the fourth day.
Malan, dropped on 32, was 41 not out and first-innings century-maker Ben Stokes 29 not out.
England were in danger of pulling well clear while Root was making a fluent 72 -- the star batsman's second fifty of the match -- on his Yorkshire home ground.
But while their batting and bowling has improved greatly since an innings and 209-run loss in the first Test at Edgbaston, West Indies' fielding remains a problem.
Also Read
Had those chances been held, the West Indies might have already won this Test and levelled the three-match series at 1-1.
England resumed on 171 for three, a lead of just two runs, after the West Indies had made 427 in their first innings following hundreds from Shai Hope (147) and Jermaine Blackwood (134).
Root, dropped in the gully on 10, was 45 not out and Malan, who had a lucky break on four when the West Indies opted against a review for caught behind when a challenge would have seen the Middlesex batsman dismissed, 21 not out.
His first innings had seen Root equal South Africa star AB de Villiers's record of scoring fifties in 12 Tests in a row.
However, in none of the previous 11 had Root managed to pass fifty in both innings.
Root's controlled clip past mid-on for a four off Shannon Gabriel, raised a century partnership with Malan in 162 balls.
The England skipper's fine form continued when he drove Roach through mid-on, with a desperate dive by West Indies captain Jason Holder, for all his 6ft 7in height, unable to prevent another four.
But another West Indies catch went down when Kieran Powell missed Malan off Holder, although the first slip was not helped by wicket-keeper Shane Dowrich coming across for the chance only to bail out late on.
Disclaimer: No Business Standard Journalist was involved in creation of this content