Förutsättningarna för Rennes i kvällens match mot Rennes var enkla. De behövde göra tre mål samtidigt som de håller nollan, då Milan vann första mötet klart med 3-0.
Och de fick en smakstart. Redan i den elfte minuten kunde Benjamin Bourigeaud dunka in ledningsmålet från långt håll framför ögonen på Zlatan Ibrahimovic. Svensken nämligen var på plats för att se sitt Milan möta fransmännen.
I och med Rennes ledningsmål var det match igen, och energipåslaget hos publiken och hemmalaget var påtagligt.
Men sedan kom kallduschen för Rennes. Jovic nickade nämligen in kvitteringen i minut 22, efter ett fint inlägg av vänsterbacken Hernandez.
Efter några halvchanser från båda lagen blåste domaren av halvleken - och ställningen var alltjämt 1-1. Rennes behövde alltså göra tre mål i andra halvlek för att matchen skulle gå vidare till förlängning.
Sju minuter in i den andra halvleken fällde Kjaer en Rennes-spelare i straffområdet - och domaren tvekade inte. Rennes fick straff, som Bourigeaud förvaltade. Fransmannen stod för en välplacerat straff i målvaktens högra hörn - hans andra mål för kvällen. Men bara fyra minuter senare, i matchminut 58, rakade Rafael Leao in 2-2 för Milan och hoppet för Renne såg ut att släckas.
Men fransmännen gav inte upp.
Efter en VAR-granskning tilldelades Rennes ännu en straff i matchminut 66. Bourigeaud gjorde inga misstag den här gången heller, och 3-2 var ett faktum.
Men Rennes hade inte så mycket mer att komma med. Det kom ingen riktig forcering och matchen slutade 3-2. Därmed är Milan vidare till åttondelsfinal i Europa League.
Startelvor:
Rennes: Mandanda - Doue, Omari, Theate, Truffert - Bourigeaud, Santamaria, Doue - Gouri, Kalimuendo, Terrier.
Milan: Maignan - Hernandez, Gabbia, Kjaer, Florenzi - Reijnders, Bennacer - Leao, Musah, Pulisic - Jovic.