After a solid defensive display by the Reds in the first half, the two sides headed into the break in deadlock.
Needing an attacking spark, it duly arrived through Alejandro Garnacho early in the second half, charging down the pitch to set up Bruno Fernandes's opener.
Chaos followed, with Diogo Dalot receiving a second yellow, Gabriel levelling the game and Altay Bayindir saving a Martin Odegaard penalty, all within a 10-minute window.
Extra time and penalties were needed to separate the sides, with Bayindir saving another spot-kick in the shootout, and Zirkzee sealing the win with United's fifth successful penalty.