Joao Moutinho's stunning goal clinched a battling 2-1 win for Wolves as nine-man Arsenal self-destructed at Molineux.

The midfielder's brilliant 30-yard drive sealed victory for the hosts, who cashed in on two red cards from the Gunners.

The visitors had total control after Nicolas Pepe's opener, with Bukayo Saka shooting against a post and seeing a goal ruled out by VAR.

But the game turned in first-half stoppage time when Ruben Neves levelled from the spot after David Luiz was sent off for tripping Willian Jose.

Goalkeeper Bernd Leno was also dismissed in the second half for handling outside his area as the Gunners' night went from bad to worse.

Defeat ended Arsenal's seven-match unbeaten run and dented their attempts to catch the Premier League's top five, leaving them four points adrift.

Wolves earned just their second win in 12 games and first victory in nine. But the points looked unlikely during a chastening opening and the hosts escaped after just 36 seconds.

Saka, back after shrugging off a hip injury, latched on to Thomas Partey's ball over the top. He eased past the dawdling Max Kilman but, with just Rui Patricio to beat, slammed a bouncing ball on to a post.

Three minutes later Patricio's smart low save denied the wideman after excellent work from Cedric Soares.

Arsenal's rapid start continued, only for a tight offside call to deny them a deserved opener after nine minutes.

Alexandre Lacazette was picked out at the far post and he cut the ball back for Saka to smash a shot into the bottom corner from 16 yards. Yet a VAR check showed Lacazette was marginally offside and Wolves survived again.

The exposed hosts, with Kilman particularly struggling against Saka, looked lost, but Arsenal needed a goal to underline their dominance.

Leno did need to save Nelson Semedo's 30-yard drive, but normal service resumed soon after when neat work from Emile Smith Rowe teed up Pepe and his shot was tipped on to the bar by Patricio.

It seemed only a matter of time before the Gunners made their superiority count and Pepe finally struck after 32 minutes.

Semedo lost the ball and struggled to recover as Pepe ran the defender ragged before leaving him in a heap, nutmegging Neves and lashing a shot in across Patricio.

Wolves, in their 250th Premier League game, had been utterly outplayed but levelled out of the blue in first-half stoppage time.

It was a gift as Luiz clipped Willian Jose in the area as he raced on to Daniel Podence's pass. The defender was dismissed - the third red card of his Arsenal career - by referee Craig Pawson and Neves fired the spot-kick high past Leno.

Gabriel replaced Lacazette at the break but the tactical switch could do nothing to stop Moutinho brilliantly winning the game four minutes after the restart.

The midfielder, who joined from Monaco in 2018, had not scored at Molineux but ended his drought in style when his fierce drive from 30 yards flew in off a post.

Wolves were now in control, while Arsenal, so vibrant and dangerous in the first half, failed to rediscover their inspiration with 10 men.

Pierre-Emerick Aubameyang came off the bench but made no impact and the Gunners imploded as Leno was sent off with 18 minutes left.

The keeper raced out of his area as Adama Traore threatened but was caught out by the pace of the ball off the wet turf and inexplicably palmed it out of play.

Alex Runarsson replaced Partey and saved Arsenal from more misery, beating away late shots from Neves and Pedro Neto.

Arsenal: Leno, Bellerin, Holding, David Luiz, Cedric Soares, Xhaka, Partey (Runarsson 75), Pepe (Aubameyang 61), Saka, Smith Rowe, Lacazette (Gabriel 46).

Unused subs: Ceballos, Odegaard, Willian, Chambers, Elneny, Martinelli.

Referee: Craig Pawson.