Lazio had three players sent off as Noah Okafor’s late goal secured a 1-0 win for AC Milan in a chaotic match at the Stadio Olimpico.

Milan grabbed their first win in four matches, a run which has seen their already faint hopes of a title challenge completely fade away, when substitute Okafor finally broke the deadlock three minutes from time.

The match turned in their favour when Lazio’s Luca Pellegrini needlessly got himself sent off with over half an hour still to play.

Lazio lost their heads in stoppage time and finished with eight men after Adam Marusic and Matteo Guendouzi were also dismissed.

Lazio, who travel to Bayern Munich on Tuesday looking to protect their 1-0 lead from the first leg of their Champions League clash, were inches away from taking the lead after 10 minutes.

Felipe Anderson flicked on a Luis Alberto corner and Matias Vecino prodded the ball narrowly wide of the far post.

They were denied a penalty moments later when Milan goalkeeper Mike Maignan took a poor touch from a backpass and then wiped out Valentin Castellanos with his follow through, but nothing was given either on the field or in the VAR room.

It was a feisty affair at the Stadio Olimpico

Milan’s first chance arrived when former Roma right-back Alessandro Florenzi crossed for Olivier Giroud, but the Frenchman’s header was off target.

Giroud should have put the visitors ahead in first-half stoppage time after Christian Pulisic’s drive was pushed over the crossbar by Ivan Provedel.

Theo Hernandez swung in the corner, but Giroud’s header at the far post flew harmlessly over.

Lazio were reduced 10 men just before the hour when Pellegrini, who had been booked seven minutes earlier for a foul on Pulisic, was sent off for blatantly pulling back the former Chelsea man.

Luca Pellegrini

Moments later, Giroud played a one-two with Ruben Loftus-Cheek, but he could only hit his shot straight at Provedel.

Provedel showed great reactions to get a hand to a Loftus-Cheek volley, before the 10 men had a golden chance to go ahead when substitute Ciro Immobile somehow missed the target from four yards out.

Milan thought they had taken the lead with 13 minutes remaining when Rafael Leao fired home from a tight angle, but a lengthy VAR check ruled the effort out for offside.

The goal came after Provedel made another fine one-handed save to keep out Okafor’s initial drive.

But Lazio could not clear the loose ball and when it fell to Okafor again, the Switzerland international forward lashed it into the net.

The match ended in a farce with both Marusic and Guendouzi sent off at the death as Milan held on for a hard-earned victory.