PSV had dominated proceedings when the sides drew 1-1 in the Netherlands last week and came to the San Siro hoping to qualify for the second stage of the competition for the first time since the 2008-2009 campaign.
But despite a commendable performance from Phillip Cocu’s side, the visitors ultimately failed to convert several chances as Milan booked their ticket for the group stage for the 17th time.
Milan coach Massimilano Allegri, who was lucky to hang on to his job at the end of last season as the Rossoneri finished third following a disastrous first half of the campaign, said his joy was tempered by renewed criticism.
“I’m happy with the performance but I’m very angry,” Allegri told Sports Mediaset, a channel owned by club owner Silvio Berlusconi.
“From the outside I can feel the detractors but inside there is a good rapport with the general manager, the players and the club.
“The lads produced a superb performance… but I don’t want to say anything else about the game. It’s the result that counts.”
PSV were given hope early on when a header from Slovenian striker Tim Matavz forced Milan ‘keeper Chistian Abbiaiti into a diving parry in the eight minute.
But a minute later the hosts took the lead.
Riccardo Montolivo’s pass found Boateng on the edge of the area and the German-born Ghanaian controlled quickly before sending a right-foot shot inside the post past PSV ‘keeper Jeroen Zoet.
Following a 2-1 defeat to Serie A new boys Hellas Verona at the weekend in their season opener, Milan had more than the Champions League on their minds and, almost to a man, showed plenty of commitment on the night.
But Abbiati had to look smart when the ball fell kindly for Adam Maher and he smashed a long-range volley which the Italian ‘keeper parried to safety.
Milan were pressing PSV at every opportunity and Montolivo came close to doubling their lead on the half hour only for his effort from the right to skew wide.
Milan endured a nervous start to the second half but fears were allayed when Balotelli toe-poked Philippe Mexes’s header past Zoet following a corner from El Shaarawy.
“In the Netherlands we played good and were unlucky to draw but tonight we killed them off,” Balotelli told Sport Mediaset
The goal took the wind out of PSV and despite Cocu making a series of late substitutions in a bid to reduce the arrears, the Dutchmen suffered a hammer blow when Milan scored their third on 77 minutes.
Balotelli started the move but it was Andrea Poli who supplied for Boateng from the left-hand edge of the area, the forward taking two touches before dragging his shot across Zoet and into the far corner.