Both Milan and Atalanta can look forward to the Champions League next season then, and Milan will be especially glad to rejoin Europe’s top table. Given the guts they’ve shown away this season, Milan will believe they can go one better next year and wrestle the Serie A title from their rivals Inter. That’s a challenge for another day though. Goodbye!
Milan’s win means they finish on 79 points, pipping Atalanta to second place in Serie A. Atalanta will have to settle for third place, while Juventus’ 4-1 win away to Bologna means they finish fourth. Napoli’s 1-1 draw with Verona drops them to fifth and into the Europa League.
Milan will play in the Champions League for the first time since 2013-14! Pioli’s side pull off a fantastic defensive display to hold off a typically lively Atalanta side. Atalanta tried their best to break Milan down, but Milan held their nerve and punished the hosts through Kessie’s two penalty kicks. De Roon’s late red card just added insult to injury for Atalanta.
90′ + 5′ FULL-TIME: ATALANTA 0-2 AC MILAN
90′ + 3′ GOAL! ATALANTA 0-2 AC MILAN! Kessie is just as accurate with his second penalty as he was with his first, beating Gollini with a shot into the bottom right corner. Milan have surely done it now!
90′ + 2′ RED CARD FOR ATALANTA! De Roon is shown a straight red for violent conduct for his part in the melee. The Dutchman pushes the referee after the card is shown, pretty much proving the official’s point.
90′ + 2′ The referee’s decision to award a penalty to Milan causes a bit of uproar among Atalanta’s players. Krunic is booked for getting involved in it.
90′ + 1′ PENALTY FOR MILAN! Milan will get the chance to seal the win with a second penalty kick! Dalot cuts back from the right for Calhanoglu. Calhanoglu fluffs his shot but Gosens foolishly has his arm raised and the referee has no choice but to point to the spot.
90′ Milan are four minutes away from securing their top-four place. Fans have gathered outside the ground and are making an impressive racket.
89′ Kessie does a fantastic job of holding off Atalanta near their own corner flag, drawing a foul from Djimsiti. Milan are almost home and dry.
87′ Toloi also heads off. Palomino replaces him at centre-back for Atalanta.
87′ Atalanta will keep on pushing. Miranchuk replaces Freuler.
86′ Toloi picks up a late booking for roughing. He’ll be heading off anyway.
85′ Atalanta force a corner down their right. Donnarumma shows great strength to punch the corner away and earn a timely free-kick for Milan in the process.
83′ Muriel fires high and wide again from outside the box. Milan have been very sturdy defensively and have largely limited Atalanta to pot-shots from range.
82′ It’s a yellow card for Mandzukic for that foul on Freuler. Everyone in a Milan shirt is having to work hard.
81′ Mandzukic slides in on Freuler and gives Atalanta a free-kick. The Croatian is going to be shown a card of some kind.
79′ Atalanta also make a change. Pasalic has come on for Maehle.
79′ Leao also makes way for Mandzukic. The striker will have to hope his miss earlier doesn’t prove costly for Milan.
79′ Saelemaekers’ shift for Milan comes to an end. Dalot comes on to provide a more orthodox defensive presence.
78′ Atalanta have had 10 shots in this second half to Milan’s one. The hosts are putting Milan under serious pressure now.
77′ Djimsiti’s cross is charged down by Milan but not entirely clear. Kjaer stabs the ball to safety. Milan might have to settle for clinging on to what they have.
75′ Freuler pops a pass to Gosens in the box but Saelemaekers does some determined defending and buys a free-kick off Gosens near the corner flag.
73′ Muriel fires wide from outside the box before taking a corner that Atalanta have won down their left. It goes out for an Atalanta throw-in on the opposite side.
71′ There’s news from Naples! As soon as Napoli have taken the lead against Verona, they’ve promptly lost it again. It’s 1-1 there, meaning they’ll be the team to drop into fifth as things stand. Milan are certainly doing their bit.
69′ De Roon is booked for bringing down Leao. The next goal here will be a big one, whoever it is for.
68′ Leao so nearly seals the win for Milan as he hits the post! The Portuguese forward darts into the box, dinking the ball over Gollini but it rebounds off the far upright and back into play.
67′ Muriel’s caught offside from de Roon’s throughball. Atalanta are upping the ante but it’s leaving them more open at the back.
65′ Malinovskiy fizzes an effort wide from distance after receiving a pass from Romero. Seconds later the Ukrainian looks to bend his shot from outside the box into the far corner. Donnarumma drops low to keep it out.
63′ Muriel goes for goal from some distance from the free-kick. The Colombian’s powerful strike isn’t too far from finding the top right corner.
62′ Diaz is the next Milan player to go off. Meite will take his place in Milan’s midfield.
61′ Milan make a few substitutions in an attempt to manage the game. Krunic replaces Bennacer first.
60′ Atalanta appeal for a penalty as Maehle’s effort hits Kjaer’s arm but there’s nothing the defender can do. Atalanta get a free-kick in a central position as Calhanoglu catches Toloi.
59′ Zapata meets Muriel’s cross from the left but can’t control the header sufficiently. Toloi gets in behind the back in an attempt to salvage the situation but is equally unable to test Donnarumma.
57′ Milan close down Malinovskiy’s shot in the box. Atalanta continue to probe and the Ukrainian finds Zapata whose low effort flashes just wide of the far post. That’s Atalanta’s best chance of the game so far.
55′ Zapata takes on Kjaer and loses out to the Dane to the left of Milan’s box. Milan end up getting a throw-in.
53′ Atalanta are still controlling the game without really threatening Milan. Milan are looking comfortable.
51′ Gosuns glides forward and sends a teasing cross into Milan’s penalty area. Donnarumma watches it all the way and plucks it out of the air.
49′ Atalanta have picked up the pace. Maehle slams a shot against Hernandez from the edge of the box. Kessie and Tomori combine to stop Freuler’s cross from the byline from reaching Zapata.
47′ Freuler picks up a yellow card for catching the sliding Calhanoglu with his studs. It looked fairly innocuous.
47′ Atalanta get the second half going.
46′ Atalanta make a substitution at half-time. Muriel replaces the quiet Pessina.
With Juventus now winning 3-0 in Bologna, Milan need this win to confirm their top-four place. As things stand Pioli’s men are finishing second, one point ahead of Atalanta. Anything can happen in the next 45 minutes though. For all their possession in the first half Atalanta had just two shots overall, neither of which were on target. Gasperini will want his side to test Donnarumma more.
Milan lead at the break thanks to Kessie’s penalty. Atalanta were on top for the majority of the first half but Milan made sure their dominance was largely benign. Hernandez won a penalty on a rare foray forward and Kessie dispatched it with ease. Milan will be pleased with their performance so far.
45′ HALF-TIME: ATALANTA 0-1 AC MILAN
45′ Since the beginning of the last decade, only two Milan midfielders have been involved in at least 15 goals in a Serie A season: Calhanoglu last season and Kessie this one. The Ivorian has contributed 12 goals and four assists in this campaign now.
43′ GOAL! ATALANTA 0-1 AC MILAN! Kessie takes a jogging run-up and slots the penalty confidently into the bottom left corner. That’s great composure from the Ivorian and a big goal for Milan.
41′ That’s the first time that Hernandez has really been able to get in behind Atalanta and it’s borne fruit for Milan. Kessie will take the penalty for Milan.
40′ PENALTY FOR MILAN! Hernandez plays a one-two to burst into Atalanta’s box and gets taken out by Maehle. The referee points immediately to the spot and Hernandez takes some time to get to his feet. Gasperini is predictably unhappy.
38′ Atalanta are continuing to knock on the door but Milan aren’t opening up. The visitors have done a decent job at holding Atalanta at arm’s length.
36′ Romero gets a lucky foul in his half as Leao looks to break through on goal. It’s a fortunate decision for Atalanta. Otherwise Leao would have been one-on-one with Gollini.
34′ The referee has a word with Gasperini in the technical area as the Atalanta boss shares too much of his opinion of a foul on Malinovskiy.
32′ Atalanta continue to dominate the game although they’re not really creating anything. Malinovskiy collides with Hernandez and Milan get the foul, although Malinovskiy didn’t do too much wrong.
31′ Juventus now lead in Bologna 2-0. Milan remain OK as things stand but a Napoli goal would quickly change that.
29′ Hernandez hands possession to Atalanta and the hosts burst forward. Kessie uses his skill and strength to hold off Maehle and buy Milan a free-kick to end the attack.
27′ Zapata pulls wide and sweeps a cross into the penalty area. Donnarumma claims it from the air with ease.
25′ De Roon drives at Bennacer and earns a corner off Calabria down Atalanta’s left. Gosuns misses the ball into the box and Milan sweep up.
23′ Diaz shows some great skill to buy a free-kick from Gosens deep in Atalanta’s half. It’s taken short to Hernandez who crosses in. Kessie claims a push in the box but the decision goes Atalanta’s way.
21′ Atalanta aren’t giving Milan much of an opportunity to get out of their half at the moment. The visitors are going to have to stay disciplined and patient.
19′ Atalanta win a free-kick down their left which Malinovskiy takes. Djimsiti gets in front of Kjaer but can’t get his header on target.
17′ Romero skips into the box but is intercepted by Bennacer who lures the centre-back into fouling him.
16′ Freuler blocks Calhanoglu’s effort from outside the box and Atalanta embark on an attack of their own. de Roon finds his path to goal blocked.
14′ Milan are keeping a good defensive shape at the moment although Atalanta are probing as best they can as Malinovskiy has his run cut out.
12′ Malinovskiy receives a pass from Maehle, cuts inside onto his left foot and fires high and wide. There’s a reason Atalanta have scored 27 goals in their last nine home league games.
10′ Atalanta have edged possession so far. They’ve had 58 per cent of the ball. The hosts haven’t worried Milan too much so far though.
8′ As usual, Atalanta are on the front foot but Milan are staying sturdy. Diaz holds off the challenge of Romero and sets Milan on their way but Gollini beats Leao to the eventual cross.
6′ Juventus have taken an early lead against Bologna. That means that Milan are currently fourth, ahead of Napoli due to their superior head-to-head record.
4′ Milan get the first chance of the game as Leao nods a pass down for Saelemaekers who blazes over from outside the box.
3′ Atalanta keep the ball at the back for a while, morphing between a back five and back four with ease. Kjaer wins a free-kick as Atalanta’s nominal centre-back Romero challenges the Dane for a header deep in Milan’s half.
1′ Milan get this game underway! They’re in their white away strip. Atalanta are wearing their blue-and-black home colours.
The two sides are out on the pitch in Bergamo. The players stand in silence to pay respect to the victims of a terrible cable car accident near Lake Maggiore earlier this weekend.
Atalanta thrashed Milan 5-0 in their last home game against them in Serie A while Milan have beaten Atalanta in just one of their last 11 league meetings. However, Milan have been great away from home this season and have kept a clean sheet in their last four league games. Their last longer such run was by their last truly great side in March 2006. Will Milan get the result they need?
There’s just the one change to Atalanta from their Coppa Italia final defeat to Juventus midweek. Maehle comes in for the injured Hans Hateboer. Milan also make a sole enforced change from their 0-0 draw with Cagliari as Leao gets the nod up front with Ante Rebic out injured.
SUBS: Soualiho Meite, Rade Krunic, Diogo Dalot, Jens Hauge, Ciprian Tatarusanu, Alessio Romagnoli, Sandro Tonali, Samu Castillejo, Antonio Donnarumma, Daniel Maldini, Pierre Kalulu Kyatengwa, Mario Mandzukic.
AC MILAN (4-3-3): Gianluigi Donnarumma; Davide Calabria, Simon Kjaer, Fikayo Tomori, Theo Hernandez; Ismael Bennacer, Franck Kessie, Alexis Saelemaekers; Brahim Diaz, Rafael Leao, Hakan Calhanoglu.
SUBS: Sam Lammers, Aleksey Miranchuk, Bosko Sutalo, Matteo Ruggeri, Mattia Caldara, Luis Muriel, Francesco Rossi, Josip Ilicic, Jose Luis Palomino, Marco Sportiello, Mario Pasalic.
ATALANTA (3-4-3): Pierluigi Gollini; Rafael Toloi, Cristian Romero, Berat Djimsiti; Joakim Maehle, Marten de Roon, Remo Freuler, Robin Gosens; Ruslan Malinovskiy, Duvan Zapata, Matteo Pessina.
Third-placed Milan, meanwhile, still have work to do as their Champions League place still hangs in the balance. While a win would see Stefano Pioli’s side pip Atalanta to second, a defeat could see them become just the second team in Serie A history to finish outside the top three after being winter champions, or even crash out of the top four entirely if Juventus have their way. It’s on then!
Second-placed Atalanta have already secured their place in the Champions League next season, equalling the 78 points they obtained last campaign. While that means the pressure is off Gian Piero Gasperini’s men, they’ll still be motivated to better their record from last season and finish as best of the rest behind champions Inter.
Hello! Welcome to our live text commentary of this Serie A final day meeting between Atalanta and AC Milan at Gewiss Stadium, Bergamo.