Having secured the Rossoneri a dramatic victory against Genoa in midweek, this time centre-back Romagnoli capitalised on Bram Nuytinck's dismissal in stoppage time at the Dacia Arena to lash home.
The goal went to a VAR review for offside and was given after an anxious wait.
But Milan, who now sit in the fourth Champions League place level on points with Lazio, could be without Gonzalo Higuain for next Sunday's showdown with Juventus.
The Argentinian striker – soon after missing a gilt-edged chance – withdrew towards the end of the first half after being knocked in the back by Rolando Mandragora.
In the early match, Ciro Immobile scored twice to boost Lazio's chances of breaking into the title race as Spal lost 4-1 at the Stadio Olimpico.
Lazio had been thumped 3-0 by Inter Milan on their last appearance in the capital but Immobile helped heal the wound by volleying home from a corner and looping in a second after Mirco Antenucci levelled.
Danilo Cataldi extended the hosts' lead with a rocket from 25 yards out and Marco Parolo produced another screamer to condemn Spal to back-to-back defeats.
A different Italy striker ran the show at Sampdoria as Andrea Belotti bagged a brace to help Torino triumph 4-1.
Immobile's international team-mate headed one into the bottom corner before converting a penalty after Emil Audero had fouled him.
Iago Falque volleyed in a third and, after Fabio Quagliarella got Samp off the mark by converting his own saved spot-kick, Armando Izzo tapped in for Torino at the back post.
Chievo, punished for false accounting before the start of the season, are on minus-one point after losing 2-0 at home to Sassuolo.
A seventh straight loss for the Flying Donkeys was authored by Federico Di Francesco, who placed an angled drive in the bottom corner before half-time, and Emanuele Giaccherini's stoppage-time own goal.
Strahinja Tanasijevic's Chievo debut lasted just 18 minutes as he picked up two yellow cards having entered as a substitute in the 70th minute.
Atalanta came from behind to triumph 2-1 at Bologna, with Duvan Zapata grabbing a 70th-minute winner after Gianluca Mancini had cancelled out Ibrahima M'baye's early opener.
Ten-man Parma shared a goalless draw with lowly Frosinone at the Stadio Ennio Tardini. The Crociati lost Slovenian midfielder Leo Stulac when he misjudged a tackle on Raman Chibsah, but Parma held on.