As the seconds ticked away, Palace poured bodies forwards. Balmer met Wells-Morrison’s late corner at the near post, but the angle was against the defender, whose flick found the side-netting.
In the fifth minute of stoppage time, Balmer’s long throw was flicked on by Ozoh and reached Omilabu. The No.7 had precious little time to react, swivelling instinctively but scuffing his finish, and it was kept out at point-blank range by Rajic.
Seconds later, Izquierdo launched one final long ball forwards into the penalty box which Balmer flicked on. Rajic punched clear, but only as far as substitute Danny Imray, whose outside-of-the-boot volley – again, an instinctive effort – sailed wide of the mark.
The defeat lacked nothing for endeavour or industry from McCarthy’s side, who will now hope to add end product to their display against Braga on Wednesday evening, knowing that they will need to at least avoid defeat - and potentially win, depending on results elsewhere - if they are to progress from Group C.
Crystal Palace: Izquierdo (GK), Kporha, Balmer, Grehan, Adaramola, Rodney (Imray, 70), Wells-Morrison, Ozoh, Omilabu, Akinwale (Ola-Adebomi, 84), Mooney
Subs not used: Gregory (GK), Addae, Watson, Cadogan, Raymond
Dinamo Zagreb: Rajic (GK), Kanizaj (Ruskovacki, 88), Gurlica, Zivkovic, Majdandzic, Brkljca, Lukanic, Vrbancic (Tonon, 60), Topil (Gec, 60), Matekovic (Kecic, 60), Peros (Sakota, 46)
Subs not used: Klarin (GK), Tabak