Daniel James forced an early save from Man City goalkeeper Ederson before Martial forced the Brazilian into action from a tight angle.
Martial opened the scoring on 30 minutes when he finished Bruno Fernandes's chipped free-kick beyond Ederson.
Sergio Aguero had a goal disallowed for offside after the break before Raheem Sterling passed up a clear chance to level it with 15 minutes remaining.
In the seventh minute of stoppage time, McTominay wrapped up the victory when he curled in from long range after Ederson's wayward throw.
Man Utd climb to fifth on 45 points, three behind fourth-placed Chelsea. Man City remain second on 57 points, 25 behind leaders Liverpool.
Man Utd: 15 Mar v Spurs (A)
Man City: 11 Mar v Arsenal (H)