A late goal from Eddie Nketiah gave Arsenal three points that took them a step closer to the Premier League title in a thriller with Manchester United.
Arsenal made the stronger start of the two sides with Martin Odegaard having an early effort blocked before Gabriel Martinelli curled over from inside the box.
They continued to dominate for the opening 15 minutes but it was the away side that took the lead when Marcus Rashford received the ball well outside the box, jinked past Thomas Partey and fired past Aaron Ramsdale from range.
Erik ten Hag's side wasn't in front for long though with Nketiah equalising just seven minutes later, powering in a header from close range to finish off an excellent team move.
It was an end-to-end game after that with the teams dividing possession evenly and testing their respective defences, but both backlines held firm, preventing any major chances from being created.
Nketiah had one at the very end of the first half, unable to get on the end of a cross-cum-shot from Oleksandr Zinchenko, but neither team could have any complaints about going into the break level.
Both teams picked up where they left off at the start of the second half, adopting a high tempo and pushing for a goal, with Arsenal looking slightly more likely to take the lead.
They did just that in the 53rd minute when Bukayo Saka cut inside onto his left foot and fired an effort into the far corner from outside the box, getting his seventh goal of the season.
Rashford then almost made it 2-2 immediately but had his powerful effort inside the penalty area well saved by Ramsdale. A few minutes later though, the keeper undid his good work, fumbling a corner onto the head of Lisandro Martinez who took full advantage to level things up.
Arsenal had opportunities to take the lead again as the game passed the hour mark but a combination of poor finishing and good defending stopped them from doing so, much to the frustration of an extremely animated Mikel Arteta on the touchline.
The league leaders dominated possession as the game entered its closing stages, pushing their opponents further and further back, but the visitors remained a threat on the counter.
Nketiah had a huge opportunity to get his second and his team's third with six minutes of normal time left when a loose ball from a free-kick fell perfectly to him, but he was denied by an excellent save from David de Gea.
The forward made amends soon afterwards though, tapping in a shot from Odegaard in the 89th minute to put his team 3-2 up.
WIth only three minutes of time added on, United were unable to create any chances and prevent Arsenal from taking a crucial three points.
Arsenal player ratings (4-2-3-1)
GK: Aaron Ramsdale - 4/10 - Made one top save but followed it up with a huge error that cost his team a goal and almost the win.
RB: Ben White - 4/10 - Struggled to handle Rashford and picked up a yellow before being subbed off at half-time.
CB: William Saliba - 7/10 - Didn't have too much to do but dealt well with everything that came his way.
CB: Gabriel - 7/10 - Led his backline excellently, dominating in the air and on the ground.
LB: Oleksandr Zinchenko - 8/10 - Didn't do anything wrong at the back, handling Antony well, and put in the all-important cross for the winning goal as well as a number of other excellent balls.
CM: Thomas Partey - 7/10 - Protected his defence well, winning a number of balls in midfield, but gave it away a lot in possession.
CM: Granit Xhaka - 8/10 - A top performance from the midfielder, who got an assist and created multiple other chances for his team-mates.
RM: Bukayo Saka - 9/10 - Got one excellent goal, so nearly got another, and was a handful for Man Utd all game.
AM: Martin Odegaard - 7/10 - Got a somewhat lucky assist and played a few great through balls.
LM: Gabriel Martinelli - 5/10 - Was able to create a few chances for others but his own finishing was really poor.
CF: Eddie Nketiah - 8/10 - Didn't offer too much in build-up and missed a huge chance, but scored the other two that fell his way to win his team the game.
SUB: Takehiro Tomiyasu (45' for White) - 7/10 - Did a much better job dealing with Rashford than White did and got an assist.
SUB: Leandro Trossard (82' for Martinelli) - N/A
Mikel Arteta - 8/10 - Would've hoped for a more comfortable victory but made some good changes in the second half to ensure his team got the three points.
Man Utd player ratings (4-2-3-1)
GK: David de Gea - 6/10 - Made one good save but wasn't able to stop any of the three goals.
RB: Aaron Wan-Bissaka - 5/10 - Was generally okay at the back but partly to blame for Arsenal's winner and quiet going forward.
CB: Raphael Varane - 7/10 - Was typically dependable at the back.
CB: Lisandro Martinez - 8/10 - Defended well, was good on the ball and deserved his well-taken goal.
LB: Luke Shaw - 5/10 - Didn't have as big an impact on the game as he would have hoped and struggled against Saka.
CM: Scott McTominay- 5/10 - Did a respectable job filling in for Casemiro from a defensive aspect but wasn't good in possession.
CM: Christian Eriksen - 4/10 - Worked hard but wasn't the creative force his team needed.
RM: Antony - 4/10 - Had multiple chances to cause Arsenal problems and create chances but couldn't really do so, severely lacking an end product.
AM: Bruno Fernandes - 6/10 - Got an assist and did decently when on the ball but wasn't able to get it as much as he would have liked.
LM: Marcus Rashford - 7/10 - Scored an excellent goal and caused White problems but missed a good chance after that and faded as the match went out.
ST: Wout Weghorst - 6/10 - Was largely kept quiet by the Arsenal defence but linked up play well a few times and did some good defensive work.
SUB: Fred (71' for Antony) - N/A
SUB: Alejandro Garnacho (90' for Varane) - N/A
Erik ten Hag - 7/10 - He deserves credit for having his team go for the win, but it's a surprise that he didn't make change more in the final stages as his team started to get dominated.