That's it, Porto have won it 1-0.
They can't. It deflects well wide and out for a goal kick, and that should do it.
Well now, Milan have won a corner. Could they? Everyone's in there...
Milan get forwards, but Calabria slashes a shot horribly wide from the inside right position. They've been so poor tonight.
Martinez leads a break for Porto, backing up Kjaer all the way to his area before dithering and being dispossessed.
Grujic is on for Otavio.
We'll have five additional minutes, as Pepe wins a corner for Porto.
Leao lands his studs on the top of Otavio's boot, and is booked.
Ibrahimovic goes in the book for a dangerous high boot on Mbemba. The Porto players are questioning why this isn't anything stronger, and I'm surprised that isn't being looked at again. On we go.
The blizzard of changes continues as Martinez replaces Taremi.
Daniel Maldini - yes, of that lineage - is on for Krunic. Elsewhere, Kalulu is booked for a foul on Corona.
Porto and their fans are desirous of a penalty, as a long ball releases Corona down the right and into the area. Kalulu gets back and nudges him out the way; you are never getting a spot kick for that.
Porto are still having the majority of the ball here, but are wary of over-committing given the narrowness of the lead. Milan have done very little up front all night.
Milan have a rare sortie into the Porto area, where the ball ricochets about and doesn't quite fall kindly enough for Bakayoko to get his shot away.
This is a bit chaotic now, as that plethora of changes either side of the goal seems have disrupted the rhythm of the match.
In Madrid it's still 2-2, although the home side are down to ten men.
Taremi leads a break for Porto but plays a poor pass to Diaz when it looked on to play him in, and Tatarusanu gathers.
Bakayoki has replaced Tonali for Milan, while Vitinha and Corona have replaced Oliveira and Evanilson.
Changes for both sides, which I'll tell you about in a second as there's a chance for Pepe, who gets the ball on the edge of the area after a corner and whistles a shot wide of the post!
GOAL! FC Porto 1 (Diaz 65) AC Milan 0
There it is! After all that pressure Milan cave. A Mario cross from the right is cleared, and breaks to Diaz after a tangle on the edge of the area. Diaz steps onto the loose ball and drills a low shot into the bottom corner to put Porto ahead.
Some Zlatan theatre, as he has a thrash at goal from a 30-yard free kick. It's less revelation and more conversion, as it goes high, high over the bar.
A triple change for Milan as they try and stem the tide here. Ballo-Toure, Giroud and Tomori are off and Kalulu, Ibrahimovic and Romagnoli are on.