Inter pull level on 54 points with Juventus, who lost 2-1 at Hellas Verona on Saturday, but are ahead of the champions on goal difference thanks to a thrilling second half turnaround after Ante Rebic and Zlatan Ibrahimovic had put Milan 2-0 up at the break.
Lazio are just a point behind in third after Felipe Caicedo scored the only goal in a hard-fought win at Parma earlier on Sunday.
“It’s a special night because in the first half we were in great difficulty like we hadn’t been this season. There was the risk of taking a hammering,” said Inter boss Antonio Conte.
“Credit to these lads because they were able to resist the blows which means that we are ready for something good.
“It’s absolutely too early to talk about things that we can still dream of today.”
Milan had dominated the first half with Inter struggling to deal with Ibrahimovic, who soared above Diego Godin before knocking down for Rebic to tap the opener past Daniele Padelli.
Stefan De Vrij blocked another cross to deny Rebic a second tap in but Franck Kessie flicked on for a waiting Ibrahimovic to turn in the second.
The comeback began five minutes after the break when Brozovic lashed home a stunning volley and two minutes later Mattias Vecino finshed off an Alexis Sanchez pass to level the scores.
De Vrij put Inter deservedly ahead with a superb diving header with 20 minutes to go, and after Ibrahimovic hit the post for Milan Romelu Lukaku then headed home substitute Victor Moses’ cross three minutes into injury time to maintain Inter’s charge for a first Serie A title in a decade.
Milan’s collapse means they missed the chance to move into the Europa League places and sit 10th.
“It’s difficult to explain. The first half was almost perfect, the second half the opposite.” said Ibrahimovic.
“We conceded the first goal and the squad lost faith, then conceded a second and everything fell apart.
“Inter in the first half didn’t look like a team who were second but then demonstrated why they were after the break.”
– Lazio in the mix –
Caicedo kept Lazio’s own dream of a first ‘Scudetto’ in 20 years alive as a 1-0 win over Parma moved the Romans second in Serie A.
Simone Inzaghi’s side are right in the title discussion after extending their unbeaten run to 18 league games.
Their last Serie A defeat was in September to Inter Milan, who they host next weekend at the Stadio Olimpico.
“We are trying to stay in there, fighting against the battleships. With this spirit, we can advance very well,” said Inzaghi.
“Sunday will be a great game against a great team.”
Caicedo broke through just before the interval as the Ecuadorian volleyed home after Parma failed to clear a ball into the box.
Napoli’s struggles continued as they collapsed to a 3-2 defeat at home to Lecce.
Last season’s runners-up had rekindled hopes of European football next season after league wins over Juventus and Sampdoria, and by eliminating Lazio from the Italian Cup.
Gianluca Lapadula netted a double, opening the scoring after half an hour, with Marco Mancoscu sealing victory with a superb free-kick eight minutes from time.
Arkadiusz Milik had levelled for Napoli just after the break with Jose Callejon reducing the deficit late on.
The hosts were furious at being denied a penalty for a challenge on Milik, with the Pole booked for diving.
“I don’t understand why they don’t go to VAR when it’s a debatable one,” said Gattuso. “It would have taken a minute to see if Milik had been fouled.”
Napoli are 11th, four points off the Europa League places, with Lecce three points above the relegation zone.
Elsewhere, Mario Balotelli’s Brescia earned a point with a 1-1 draw at home against Udinese in new coach Diego Lopez’s first game in charge of the basement club.
Jeremie Boga scored late to grab a 2-1 win for Sassuolo at SPAL.