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.