AZ took a 3-0 lead into the second leg at the Stadion Galgenwaard, but the home side struck twice in the first half to put the tie firmly back in the balance.
The Kaaskoppen were then reduced to ten men after Derrick Luckassen’s dismissal, and Utrecht duly levelled the aggregate score through Gyrano Kerk after 82 minutes.
Krul kept out Sebastian Haller’s penalty with virtually the last kick of the game, and AZ held out for another half an hour to force a shootout.
However, Pantelis Hatzidiakos and Joris van Overeem both missed from the spot for John van den Brom’s side, allowing Nacer Barazite the chance to step up and send Utrecht into Europe’s secondary club competition for the first time in four years.