Jesse Lingard scored twice but Paul Pogba was sent off as Manchester United beat Arsenal 3-1 in a breathless match at the Emirates Stadium.
United were ahead after only four minutes when Laurent Koscienly's crossfield pass was cut out by Antonio Valencia, who played a one-two with Pogba and beat Petr Cech.
Arsenal's Alexis Sanchez saw a free kick blocked before the visitors doubled their advantage after only 11 minutes.
This time, Romelu Lukaku stole the ball from Shkodran Mustafi, who wanted too much time, and played a pass to Anthony Martial, whose flick freed Lingard to finish low into the corner.
Mustafi had to be substituted after picking up a knock in that incident, with Alex Iwobi coming on, and Arsenal were soon under pressure again when Lukaku found space out wide but Nacho Monreal cleared.
The home side almost found a way back into the game with 20 minutes gone when, from a corner, Alexandre Lacazette saw his effort roll agonisingly wide of the post.
With the half-hour approaching, Mesut Ozil dinked a free kick towards the far post where Ashley Young cleared off the line, and two minutes later Lacazette came even closer when, after De Gea had saved his first shot, his second hit keeper and then bar.
Granit Xhaka picked up the pieces only for his sidefooted effort to fly fractionally wide, and with three minutes of the first half remaining Aaron Ramsey was denied by a superb Nemanja Matic block.
There was still time for De Gea to make another great save before the half was over, tipping away one-handed after the ball cannoned off Lukaku following an Arsenal free kick.
But less than five minutes into the second period, Arsenal had the goal their pressure deserved, Lacazette lashing in after Sanchez and Ramsey had opened up the United defence.
Back came United, who were within an ace of restoring their two-goal lead when Cech made a fine save to deny Lingard, the ball looping back off a post and Arsenal breaking to fashion a chance for Iwobi that De Gea stopped.
After 56 minutes Arsenal looked certain to level when Lacazette's low shot was superbly saved by De Gea and Sanchez, following up, was somehow denied by the keeper.
But seven minutes later United were two clear again, Pogba played in on the right by Lingard and going past Laurent Koscielny to square for Lingard, running on, to tap home.
With 67 minutes on the clock, United boss Jose Mourinho made his first change, bringing on Ander Herrera for Anthony Martial, while Arsene Wenger brought on former United forward Danny Welbeck for Granit Xhaka.
After 74 minutes, his and Arsenal's hopes were boosted when Pogba was shown a straight red card for a stamp on Hector Bellerin, who had fouled Ashley Young moments earlier, ruling him out of the forthcoming Manchester derby.
It prompted Mourinho to bring on Matteo Darmian for Lingard, while Wenger opted to throw a second striker into the fray, Olivier Giroud replacing Sead Kolasinac.
De Gea tipped over a deflected Welbeck strike as time ticked into the final 10 minutes before Koscielny was booked for fouling Lukaku as he threatened to burst clear and Arsenal could have had a penalty for Darmian's challenge on Welbeck.
But United, despite their numerical disadvantage, had done enough to again close the gap on neighbours Manchester City ahead of next weekend's derby.