Going into this game in a real slump, expectations were not high from an Arsenal point of view, but first-half goals from Henrikh Mkhitaryan and Aaron Ramsey secured a 2-0 win, putting them in a strong position for the return leg next week.
There's not a lot Arsene Wenger can do with his team selections really, so to see almost the same side that lost to Brighton last weekend named didn't suggest much would be different, but perhaps the occasion itself played a part.
This is the only competition that's in any way significant between now and May, and after such a dreadful 2018 thus far, there was an encouraging response from the Gunners. They did ride their luck a little, but for the most part defended well, frustrating the home side, and in the end, were deserved winners on the night.
Individual mistakes have been so prevalent and damaging this season, so not making any tonight was a definite positive. There were also some glimpses of Arsenal's attacking verve returning, with Henrikh Mkhitaryan very effective down the left, and with two assists from Mesut Ozil we saw some of the team's creative elements begin to click again.
Performance-wise there wasn't much missing, but perhaps a second-half injury to Sead Kolasinac -- who had put in an excellent shift down the left -- could be construed as one.
Manager rating out of 10
7 -- Wenger has been roundly and rightly criticised for his team's failings, so fair's fair, and when he pulls off a great result he should get some praise too.
Player ratings (1-10; 10 = best. Players introduced after 70 minutes get no rating)
GK David Ospina, 7 -- Made one crucial intervention late in the second half to deny Milan a real chance, but had a couple of classic Ospina moments in the first period.
DF Calum Chambers, 7 -- He remains an unconvincing deputy for the injured Hector Bellerin, but worked hard down the right, and had a good attempt on goal in the first half. Went off injured late on.
DF Shkodran Mustafi, 7 -- Much better than in recent weeks, although he had some moments in the first 45 minutes when he looked like he was doing his best to nobble his own performance. Grew into the game.
DF Laurent Koscielny, 8 -- Having had such a difficult day against Brighton, he really needed a solid performance and he produced it, with eight clearances and four interceptions.
DF Sead Kolasinac, 7 -- Another who has been struggling for form in the last few months, but tonight was much more promising. It's a shame he picked up the injury.
MF Granit Xhaka, 8 -- His best display for a long time. He made more passes than any other Arsenal player at a completion rate of 95 percent, the kind of game you need your central midfielder to have away from home against tough opposition.
MF Aaron Ramsey, 7 -- He can be the player you need on a big occasion, his goal was excellently taken and he provided good support to Xhaka.
MF Jack Wilshere, 6 -- Often played as the furthest man forward in support of Danny Welbeck, but looked leggy at times and didn't always use the ball as well as he could have.
MF Mesut Ozil, 8 -- At times peripheral, but when Arsenal needed someone to provide assists, he was there. Didn't look pleased to be taken off around 10 minutes from time, but his work was done.
MF Henrikh Mkhitaryan, 7 -- Scored his first goal for the club, and could have had a couple more if his finishing had been better. A positive day for the Armenian.
FW Danny Welbeck, 6 -- It's not really going for him at the moment but he did get involved and worked hard. The moment late on when he kicked the ground rather than the ball kind of summed up where he is right now.
DF Ainsley Maitland-Niles, 7 -- Slotted in well to ensure that Arsenal weren't exposed by the departure of Kolasinac.
DF Rob Holding, NR -- Helped shore things up late on as Wenger looked to see out the game and keep the clean sheet
DF Mohamed Elneny, NR -- Came on for the injured Chambers and added some energy down the right in the final few minutes.