The Italians started positively, scoring two goals that were then disallowed by VAR. Though Red Star warmed into the tie with two chances that kept Gianluigi Donnaruma on high-alert.
In a fairly even first half, Milan lost Ismael Bennacer to a possible hamstring injury which will be a worry ahead of the Derby della Madonnina on Sunday afternoon.
The Rossoneri broke the deadlock just before the interval with Red Star defender Radovan Pankov turning the ball into his own net after a cross from Samu Castillejo.
The home side equalised in the early stages of the second half after the referee awarded a penalty for handball, which was then confidently converted by Guelor Kanga.
With the home side gaining momentum, Milan had to deal with some pressure which was then relieved when Sandro Tonali led a swift counterattack which resulted in Theo Hernandez being fouled in the box. The Spaniard stepped up himself to dispatch from 12 yards.
Both teams continued to create chances even when Red Star had Milan Rodic sent off for a second yellow card which helped Milan take more control of the game. Red Star refused to give up constantly pushing forward to try and get level.
Their persistence was rewarded in the 93rd minute when Milan Pavkov headed past Donnaruma to ensure all is to play for in the second leg at the San Siro.
The late goal will be a bitter pill to swallow for Milan but all focus must now go to the Milan Derby this weekend ahead of the second leg on February 25.