AC Milan conceded a late equaliser as Red Star Belgrade fought back to secure a 2-2 draw despite having Milan Rodic sent off, leaving next week's return leg at San Siro tantalisingly poised.
The visitors had taken the lead when Radovan Pankov poked into his own net shorty before half time, but Guelor Kanga Kaku stepped up to convert a penalty given against Alessio Romagnoli for handball.
Theo Hernandez tucked home a spot kick for Milan nine minutes later and Red Star's task seemed even tougher when Rodic was dismissed for a second bookable offence, but Milan Pavkov - who shot to fame by scoring twice against Liverpool a few years ago - grabbed an injury time equaliser.
Let's take a look at the Milan player ratings.
1. Goalkeeper & Defenders
Player ratings as Manchester United come from a goal down to beat Aston Villa 3-1 at Villa Park. Bruno Fernandes and Mason Greenwood were among the goalscorers.
Edinson Cavani scored twice as Manchester United reached the Europa League final despite losing 3-2 to Roma on Thursday night. Player ratings.
Player ratings as Juventus slip to a costly 3-0 defeat to Milan, putting top-four qualification out of their hands
AC Milan have launched their new Puma home kit for the 2021/22 season, with a fresh take on the Rossoneri's iconic strikes inspired by a changing city skyline.
Gianluigi Donnarumma (GK) - 6/10 - Pulled off five saves in the Milan goal in a pretty solid showing.
Pierre Kalulu (RB) - 6/10 - Threatening in attack and did his bit at the back. Did give the ball away a few times, but at just 20 in his first full senior season it was another encouraging outing. Also made four tackles, a joint game high.
Alessio Romagnoli (CB) - 5/10 - Penalised for Red Star's penalty and didn't seem to have many complaints about it. Also caught out of position a few times and wasn't particularly dominant in the air.
Fikayo Tomori (CB) - 6/10 - The loanee from Chelsea was slightly more composed than his partner in central defence but still not overly commanding.
Theo Hernandez (LB) - 8/10 - Remains one of Milan's biggest attacking threats. Had a goal disallowed but ensured he got on the scoresheet by earning and converting a penalty.
Rade Krunic (CM) - 7/10 - Had a few lovely moments on the ball, completing three dribbles. Also had highest successful pass percentage of any starting player on the night.
Ismael Bennacer (CM) - 5/10 - Played reasonably well but was substituted with an injury before half time. Doubtful for the Milan derby at the weekend.
Soualiho Meite (CM) - 6/10 - Held his position well and frugal in possession. Dispossessed a couple of times, but Bennacer's injury may mean he gets a start on Sunday irrespective of this OK performance.
Samu Castillejo (RW) - 6/10 - Didn't look to dribble past his opposite number and wasn't particularly inspired with the ball at his feet. Just a bit meh.
Mario Mandzukic (ST) - 6/10 - Still getting up to speed as a Milan player. A few nice moments of interplay with his attacking colleagues on his first start for the club but only had one shot all night before being subbed.
Ante Rebic (LW) - 6/10 - Reasonably bright and breezy in possession before being withdrawn at half time without making much of a concrete impression.
Diogo Dalot - 6/10
Hakan Calhanoglu - 6/10