Andrej Kramaric drog till och bollen träffade Davide Frattesis hand och efter en VAR-koll pekade domaren på straffpunkten.
Luka Modric stegade fram, men Gianluigi Donnarumma räddade straffen.
Det dröjde dock bara 30 sekunder innan Modric hade tagit revansch då han tryckte upp en skottretur rakt upp i nättaket.
Målet innebar att 38-årige Modric blev EM:s äldsta målskytt genom tiderna då han slog Ivan Vastic, som var några dagar yngre.
Men i matchens 98:e minut kom kvitteringen. Riccardo Calafiori drev fram bollen och hittade Mattia Zaccagni som snyggt placerade in 1-1-målet och blev matchhjälte då han tog Italien vidare till åttondelsfinal.
– Det är en otrolig känsla. Jag är lite känslosam nu. Det är en underbar natt, jag kommer aldrig glömma detta, säger Zaccagni efter matchen.
Italien kommer att ställas mot Schweiz i åttondelsfinalen. Kroatien kommer med största sannolikhet inte gå vidare som en av de bästa grupptreorna på två poäng.
Europamästerskapet
![Kroatien logo](https://www.svtstatic.se/sport/teamlogos/fotboll-kroatien-flag-large-4354.png)
Kroatien
1 - 1
![Italien logo](https://www.svtstatic.se/sport/teamlogos/fotboll-italien-flag-large-2210.png)
Italien
Första halvlek
Sucic
24'
Halvtid
- 46'Frattesi
Pellegrini
- Budimir
Pašalic
46'
Andra halvlek
Modric (Missad straff)
54'- 1 - 0
Modric
55' - 57'Chiesa
Dimarco
Modric
60'- Perišic
Sucic
70' - Ivanušec
Kovacic
70' Ivanušec
73'- 75'Scamacca
Raspadori
Pongracic
78'- Majer
Modric
81' - 81'Zaccagni
Darmian
- 81'Fagioli
Jorginho
Stanisic
82'- Juranovic
Kramaric
90' Brozovic
90'+1'- 90'+3'
Calafiori
- 90'+6'
Fagioli
- 90'+8'1 - 1
Zaccagni (Calafiori)