- Zito Luvumbo (29')
- Noah Okafor (40')
- Fikayo Tomori (45')
- Ruben Loftus-Cheek (60')
Tomori and Loftus-Cheek found the net either side of half-time after a first-half equaliser from Noah Okafor.
Stefano Pioli's side secured their fifth Serie A win of the season that moved them up to 15 points in second place, level with leaders Inter Milan, who host Sassuolo later on Wednesday. Cagliari are bottom of the table with two points.
The visitors dominated much of the first half despite conceding the opener, with Tijani Reijnders narrowly missing with an angled attempt in the opening minutes.
"We had started the match well, we could have taken the lead but we weren't concrete. Then we conceded a goal through carelessness," Pioli told Sky Sports Italia.
"We did well to turn it around with our principles and win a game that was certainly not easy.
"We played a game that wasn't easy tactically. We had to be balanced to be dangerous, but some cracks showed."
Zito Luvumbo thrilled the home crowd after 29 minutes, as he unleashed a left-footed rocket into the top corner from a tight angle, against the run of play.
Five minutes later, Tomori bundled another loose ball into the net from point-blank range.
Shortly before half-time, Loftus-Cheek went close to securing Milan's third goal, but Radunovic denied his attempt with an outstretched foot. However, the English midfielder shattered any remaining hope for the Sardinian side on the hour mark when he scored his first goal for Milan with a powerful strike from 25 metres out.
"I'm very happy. Of course, the three points are very important, it was a difficult game, we knew they'd come out fast, they got the first goal, but we stuck together and stayed strong mentally," Loftus-Cheek told DAZN.
"It's all about the mentality and we showed tonight that even if we go behind, we can turn it around."
- Federico La Penna