Nederländerna tog ledningen efter en dryg halvtimme då Donyell Malen avslutade ett snyggt anfall.
Men Kroatien visade vilja i andra halvlek. Först fick de straff efter att Luka Modric rivits ner av Cody Gakpo. Den förvaltade Andrej Kramaric.
Med en dryg kvart kvar av matchen gjorde Mario Pasalic 2-1 efter ett inspel från vänsterkanten.
Alldeles i slutminuterna fick Gakpo ett jätteläge att kvittera, men han fick en felträff och missade målet. Då trodde nog de flesta att matchen var avgjord, men i den 96:e minuten kvitterade Noa Lang för Nederländerna efter en tilltrasslad situation.
Matchen gick till förlängning och där blev Bruno Petkovic stor hjälte då han sköt in ett tungt skott från långt håll bara sju minuter efter att han blivit inbytt. Han jublade ut sin glädje tillsammans med de tillresta supportrarna.
Det blev till slut 4-2 efter att Luka Modric fastställt resultatet på straff.
Den andra semifinalen spelas imorgon mellan Spanien och Italien.
Bronsmatchen och finalen spelas i Enschede respektive Rotterdam på söndag.
Portugal var först att vinna herrarnas Nations League då de lyfte bucklan 2019. Regerande mästare är Frankrike.