United played a weakened side with several youngsters and it was one of their young guns Marcus Rashford who opened the scoring on 29 minutes.
The 18-year-old doubled the home sides lead just three minutes later to stun the Gunners.
Mesut Özil setup Danny Welbeck with a brilliant set-piece delivery for the second league game running to get Arsenal back in the game.
United regained their two goal advantage when Herrara scored on 65 minutes but just when it looked like game set and match Özil fired in from close range to make it 3-2.
The Gunners were however, unable to find the equaliser and ended up falling five points behind league leaders Leicester City.
United meanwhile close the gap with fourth placed cross-city rivals Manchester City to just three points following the win.
Manchester United v Arsenal
Stadium: Old Trafford
Referee: 14:00 GMT
Man United confirmed starting lineup:
De Gea; Varela, Carrick, Blind, Rojo; Schneiderlin, Herrera; Lingard, Mata, Memphis; Rashford.
Subs: Romero, McNair, Riley, Fosu-Mensah, Weir, Januzaj, A.Pereira.
Manager: Van Gaal
Arsenal confirmed starting lineup:
Cech; Bellerin, Koscielny, Gabriel, Monreal; Ramsey, Coquelin; Walcott, Ozil, Sanchez; Welbeck
Manager: Arsene Wenger
Goals: 29′, 32′ Rashford, 40′ Welbeck, 65′ Herrara, 69′ Özil