Arsenal had two players sent off as they threw away a lead and lost to Wolves – who won for the first time in nine Premier League games.
The Gunners, who had earlier hit the woodwork twice and had a goal disallowed, went ahead when Nicolas Pepe held off two Wolves challenges and curled a fine finish into the net.
But Arsenal were reduced to 10 men when defender David Luiz brought down Willian Jose, with Ruben Neves equalising with the resulting penalty in first-half injury time.
Joao Moutinho scored with a brilliant strike from 30 yards out to put the hosts ahead soon after the restart.
However, the Gunners were then reduced to nine men as goalkeeper Bernd Leno handled the ball outside of his penalty area after racing out trying to deny Adama Traore.
This was Wolves’ first league victory since a 2-1 victory at Molineux against Chelsea on 15 December, although they had also won two FA Cup ties – against Crystal Palace and National League North side Chorley – since then.
Wolves remain in 14th and Arsenal – who would have gone sixth with victory – stay 10th, eight points behind fourth-placed Leicester City in the final Champions League qualification spot.
Luiz red card changes the game
The turning point came in first-half injury time when Arsenal were leading 1-0 and were dominant.
Daniel Podence played the ball through to Jose and the Brazilian, on his home debut, had his heel clipped from behind by compatriot Luiz.
Referee Craig Pawson decided that Luiz had made no attempt to play the ball and sent the centre-back off. It was Luiz’s third red card for Arsenal after also being dismissed in the 2-2 draw at Chelsea in January 2020 and then again in the 3-0 loss to Manchester City in June.
After the match, both managers had contrasting opinions with Wolves boss Nuno Espirito Santo saying Pawson had “no other option” but to award the penalty and send off Luiz.
However, Gunners manager Mikel Arteta said he “cannot tell you where the contact is” and suggested the club may appeal Luiz’s red card.