Ajax is er zonder al te veel moeite in geslaagd om de bekerfinale te bereiken. In Heerenveen zat een Friese stunt er geen moment in. De Amsterdammers kwamen in de eerste helft via Klaassen op voorsprong en liepen na de rust verder uit. Tadic schoot Ajax vanaf de stip in veilige haven en Neres zorgde met de 0-3 voor het slotakkoord.
Ondanks het volle programma zag Erik ten Hag tegen Heerenveen geen reden om al te veel te veranderen aan zijn elftal. De oefenmeester voerde slechts één wijziging door ten opzichte van het duel tegen PSV. Devyne Rensch, die afgelopen zondag geblesseerd raakte, was achtergebleven in Amsterdam. De rechtsbackpositie werd overgenomen door Jurriën Timber. Hierdoor was er in het centrum van de defensie een basisplaats voor Perr Schuurs.
Heerenveen was in de eerste helft niet opgewassen tegen een Ajax op volle oorlogssterkte. De Amsterdammers dicteerden het spel en gaven de Friezen geen ruimte om tot voetballen te komen. Iets dat ook zonder de druk van Ajax al lastig genoeg was gezien de dramatische staat van het veld. Ook Ajax worstelde daarmee, maar creëerde na een kwartier spelen wel de eerste goede kans. Haller schoot vanuit kansrijke positie over.
Bij het tweede serieuze wapenfeit was het wel raak. Antony brak de wedstrijd na twintig minuten open met zijn specialiteit. De Braziliaan kwam naar binnen en krulde de bal het zestienmetergebied in. Daar was Davy Klaassen aan de aandacht van Heerenveen ontsnapt en kon zo fraai de 0-1 in de lange hoek koppen. Tien minuten later was Antony zelf dichtbij de 0-2. Opnieuw ging hij naar zijn linker, maar ditmaal om zelf uit te halen. Erwin Mulder zag tot zijn grote opluchting de bal net naast gaan.
Heerenveen wist daar eigenlijk niks tegenover te zetten. Alleen Bochniewicz was enigszins dichtbij. De centrale verdediger kreeg een aardige kopkans, maar raakte de bal verkeerd. Ajax had de wedstrijd volledig onder controle en dacht op slag van rust op 0-2 te komen. Tadic wurmde zich voorbij zijn tegenstander en gunde de intikker aan Klaassen. Toch ging diens tweede treffer niet door. De VAR oordeelde terecht dat Tadic de bal met de hand had meegenomen.
In de rust kreeg Ajax nog een tegenvaller te verwerken. Daley Blind wees in de eerste helft al een keer naar zijn knie, en bleek echt niet verder te kunnen. Sean Klaiber kwam erin als rechtsback zodat Timber naar de linkerkant kon verhuizen. Na een uur spelen moest Ten Hag opnieuw gedwongen wisselen. Klaassen verstapte zich op het zeer slechte veld en kon niet verder. Kudus kwam binnen de lijnen als zijn vervanger.
De invaller bewees direct zijn waarde. De Ghanees passeerde Bochniewicz in het zestienmetergebied en werd vervolgens aangetikt. Nijhuis kon niet anders dan naar de spits wijzen. Tadic nam uiteraard plaats achter de bal en jaagde deze onhoudbaar in de bovenhoek. Heerenveen kreeg vervolgens direct een goede mogelijkheid om de aansluitingstreffer te maken, maar Stekelenburg won knap het één tegen één duel met Van Bergen.
Met een 0-2 voorsprong had Ten Hag de ruimte om wat spelers rust te geven. Zo bracht hij frisse flanken binnen de lijnen. Neres en Idrissi vervingen Antony en Tadic. Eerstgenoemde had niet lang nodig om op het scorebord te komen. Een klein kwartier voor tijd ontsnapte de invaller aan buitenspel en rondde koelbloedig af. De VAR trok voor de zekerheid nog even een lijntje, maar de 0-3 bleef staan.
In de slotfase kreeg Ajax nog een aantal kansen om het feest nog mooier te maken, maar een vierde treffer bleef uit. Zo wint Ajax met 0-3 van Heerenveen en wacht op 18 april Vitesse in de Kuip.