The eagerly-anticipated last-16 clash between these European heavyweights produced drama on Thursday night and set-up an interesting return fixture at San Siro next week.
Half-time substitute Diallo’s superb, improvised header looked to have secured a hard-fought first-leg win at Old Trafford, only for Kjaer’s last-gasp header to seal Milan a deserved 1-1 draw.
In truth, Solskjaer’s side would have been fortunate to be going to Italy in the lead given how the absentee-hit Rossoneri outplayed the hosts for large periods.
United looked a shell of the side that impressively won at Manchester City on Sunday and Franck Kessie was denied an early opener when the video assistant referee contentiously ruled he had handled.
The hosts were second best throughout the opening period but inexplicably failed to go into the break ahead as unmarked Harry Maguire met a flicked-on corner with a shinned effort that hit the post.
Substitute Diallo did better when expertly heading in from Bruno Fernandes’ superb chipped pass, but Milan secured a potentially crucial away goal at the death when Kjaer capitalised on United’s inability to defend set pieces.
Milan deserved this result at Old Trafford, where they played impressively despite being without the likes of former United star Zlatan Ibrahimovic, Theo Hernandez and Ante Rebic among others.
Rafael Leao saw a fifth-minute opener ruled out for offside as Stefano Pioli’s men started on the front foot, with the Rossoneri finding the net again in the 11th minute.
United were caught napping as Kessie controlled a throw-in from the right and continued to hit a smart strike past Dean Henderson to send the depleted visitors wild.
There were few complaints about the goal as the teams lined up for kick-off, only for Solskjaer’s men to be given a surprise reprieve as VAR Bastian Dankert surprisingly cancelled the goal out for a Kessie handball.
It was a controversial decision but Milan continued unflustered, with Alexis Saelemaekers proving a handful as Manchester City academy graduate Brahim Diaz probed.
Rade Krunic mishit an effort before Saelemaekers tested Henderson as the Rossoneri continued in the ascendancy, leading skipper Maguire to angrily admonish his team-mates.
A smart early Anthony Martial effort tipped over by Gianluigi Donnarumma was the best the hosts had mustered until Maguire wasted a glorious chance to score an undeserved 38th-minute opener.
Alex Telles swung in a corner that Fernandes flicked on to the far post, where the unopposed United skipper somehow failed to convert from point-blank range as the ball spun off his foot and away from goal.
The hosts will have been relieved to hear the half-time whistle after a torrid first half, with Diallo emerging in place of Martial when the teams re-emerged.
This was just the 18-year-old’s third substitute appearance for United but he made quite the impact, putting the hosts ahead within five minutes of coming on.
Diallo darted between Chelsea loanee Fikayo Tomori and Diogo Dalot, who is on loan from United, to meet Fernandes ball with a fine back header over Milan goalkeeper Donnarumma.
It was a gut punch for the impressive visitors, who could have gone further behind had it not been for a timely block on Daniel James.
Milan eventually rallied and began to exert pressure again, with Kessie denied by Henderson before Krunic somehow failed to get a Davide Calabria cross on target.
James turned a whipped cross badly wide as the heavens opened and play became stretched, with Milan screaming for Scott McTominay to pick up a second booking as the clock wound down.
The Rossoneri pushed relentlessly for a leveller and grabbed an away goal in stoppage time.
Nemanja Matic lost Kjaer when a corner came in to get away a header that Henderson should have kept out.