Arsenal 1 Manchester United 1 (3-5 penalties)
Manchester United earned a place in the Emirates FA Cup fourth round with a thrilling win on penalties against Arsenal.
After a solid defensive display by the Reds in the first half, the two sides headed into the break at Emirates Stadium in deadlock.
With the game needing an attacking spark, it duly arrived through Alejandro Garnacho early in the second half, charging down the pitch to set up Bruno Fernandes's opener.
Chaos followed, with Diogo Dalot being sent off after receiving a second yellow card, Gabriel equalising for Arsenal and Altay Bayindir saving a Martin Odegaard penalty, all within a 10-minute window.
Extra time and penalties were ultimately needed to separate the sides, with Bayindir saving another spot-kick in the shootout, and Zirkzee sealing the win with United's fifth successful conversion.
FIRST HALF - UNITED SOLID AT THE BACK
As to be expected in a home tie, Arsenal dominated much of the early possession, but they struggled to turn that into any clear-cut chances in the opening moments.
Manuel Ugarte almost instantly engaged the travelling United supporters, putting in a strong but fair challenge on Martin Odegaard in the centre of the park, before using his strength a couple of minutes later to see the ball out at the end of an Arsenal attack.
With the Gunners coming forward in waves, the Reds needed the solidity of players like Ugarte, and thanks to the Uruguayan and others, Altay Bayindir had little to do between the sticks.
Ruben Amorim's men completed defensive-line drills during the warm-up at the Emirates, and it proved effective in nullifying the hosts when they were called offside numerous times in the first 20 minutes, including the occasion when Gabriel Martinelli had the ball in the back of the net. United's offside trap was working a treat.
By this point, it was the visitors' turn to apply some attacking pressure, with the best chance falling to Kobbie Mainoo, who curled an attempt from outside the box that looked to be heading towards goal before it was collected by David Raya.
Whenever Arsenal's attacking traffic increased, United's defensive ranks answered every questions asked of them.
At the other end, Alejandro Garnacho produced a promising shot at the end of one of his trademark cross-field runs on the break, and Bruno Fernandes had a loud claim for a foul by Gabriel Jesus on the edge of the hosts' box ignored.
The United captain was booked by referee Andy Madley for his subsequent protest. Jesus, meanwhile, was stretchered off after being injured in the same incident.
SECOND HALF - BAYINDIR RESCUES REDS
If there was any criticism that Amorim's men hadn't managed to use the first-half defensive display as a springboard to attack Arsenal, that same accusation couldn't be levelled at the Reds after the interval.
Seizing possession, Garnacho once again set off down the field with the Gunners' defence out of shape, before finding Fernandes in space on the cutback.
The United captain wasn't going to pass up on a gift like that, and he duly curled a shot beyond the grasp of Raya, before heading off to celebrate with an ecstatic away end.
However, the game was turned on its head in an instant. Dalot slid to challenge Mikel Merino but arrived marginally too late, receiving a yellow for his troubles. Having already been booked in the first half, the Portugal international was given his marching orders.
As things went from bad to worse for the visitors, Arsenal equalised just two minutes later, courtesy of Gabriel, who volleyed home a loose ball after United were unable to clear Gabriel Martinelli's cross.
When the Gunners were then awarded a penalty — Harry Maguire adjudged to have pulled down Havertz in the box, which was followed by a scuffle between both sides — it looked like the game was slipping away from the Reds.
That was how it felt until Bayindir dived low to his left to collect Odegaard's spot-kick, before jumping up to gather the ball. It turned the atmosphere in the stadium back in United's favour. To top that off, the Turkish goalkeeper pulled off another acrobatic save to deny Declan Rice an almost certain goal.
With stoppage time approaching, Joshua Zirkzee launched and almost finished off the same attack after he combined with fellow substitute Amad, only to be denied by a fortunate Arsenal deflection. The Gunners had their own chance to win the game in normal time through Havertz, who fired off target when he was stood inches from the goal-line.
Rice went close again with almost the final kick of the game, but this tie was destined for an extra 30 minutes.
EXTRA-TIME
Heading into extra-time, Arsenal almost took the lead just after the clock had struck 100 minutes, with Havertz nearly finding Leandro Trossard for a tap-in, but Matthijs de Ligt did just enough to put the Belgian off.
Zirkzee went close shortly after the break but his shot was tipped behind for a corner by Raya.
It was end-to-end drama at this point, with Amad popping up to threaten with a header in 110th minute. Both went close, but penalties were needed to separate the two rivals.
PENALTIES
Bayindir had been the hero a couple of times before in this game, and so he was again, diving to his left to tip Havertz's spot-kick behind, giving United the advantage in the shootout.
And that was an advantage taken by Zirkzee, under all the pressure, as he slotted away the decisive penalty in front of the travelling fans, securing the Reds' place in the next round of the FA Cup.
MATCH DETAILS
Arsenal: Raya; Timber (Partey 101), Saliba, Gabriel, Lewis-Skelly (Trossard 91); Jorginho (Tierney 113), Merino (Rice 73), Odegaard (c); Jesus (Sterling 40), Havertz, Martinelli.
Subs not used: Neto, Kiwior, Zinchenko, Butler-Oyedeji.
Goals: Gabriel 70.
Booked: Gabriel, Havertz.
United: Bayindir; De Ligt, Maguire (Yoro 104), Martinez; Mazraoui, Ugarte (Malacia 91), Mainoo (Collyer 81), Dalot; Fernandes (c), Garnacho (Amad 80); Hojlund (Zirkzee 81).
Subs not used: Onana, Casemiro, Eriksen, Antony.
Goals: Fernandes 52.
Booked: Martinez, Fernandes, Dalot, Mainoo, Maguire.
Sent off: Dalot (second yellow card).