Hungary snatched a late equaliser thanks to a Birkir Saevarsson own goal, but Iceland remain unbeaten.
Iceland were unchanged from the side that held Portugal to a shock 1-1 draw in their major tournament debut. Hungary were top of the group after beating 10-man Austria 2-0, but Roland Juhasz stepped in for the injured Attila Fiola, moving Adam Lang to right-back, with Tamas Priskin and Zoltan Stieber in attack.
These sides had never previously shared the spoils with seven Hungarian victories and three for Iceland, but intriguingly 14 goals in their last three meetings.
Jon Dadi Bodvarsson nodded over from a huge throw-in, while Johann Gudmundsson fired straight at the Hungarian goalkeeper after shrugging off Tamas Kadar.
Kolbeinn Sigthorsson’s strike was decisively blocked at the near post and Laszlo Kleinheisler drilled just wide.
Goalkeeper Gabor Kiraly horribly fumbled a corner and then knocked into Aron Gunnarsson as he tried to get it back under control, leading to a penalty. Gylfi Sigurdsson stepped up to convert the spot-kick and put Iceland in front.
Sigthorsson turned a free header wide, but his blushes were saved by an incorrect offside flag, but Hungary stepped up the pressure in the second half and the goalkeeper struggled to get a fierce Balazs Dzsudzsak free kick under control.
Captain Aron Gunnarsson went off with a groin injury and Iceland were increasingly pegged back into their own half. The tradition for late goals in this tournament continued when Hungary grabbed their equaliser, a Nemanja Nikolic cross accidentally bundled into his own net by Birkir Saevarsson while trying to anticipate Daniel Bode.
With the last kick of the game, a Sigurdsson free kick was charged down and veteran Eidur Gudjohnsen drilled the follow-up inches past the post.
Iceland 1-1 Hungary
G Sigurdsson pen 39 (I), B Saevarsson og 87 (H)
Iceland: Halldorsson; B Saevarsson, R Sigurdsson, Arnason, A Skulason; Gudmundsson, G Sigurdsson, A Gunnarsson (Hallfredsson 67), B Bjarnason; Sigthorsson (Gudjohnsen 84), Bodvarsson (Finnbogason 69)
Hungary: Kiraly; Lang, Guzmics, Juhasz (Szalai 84), Kadar; Kleinheisler, Gera, A Nagy; Stieber (Nikolic 67), Priskin (Bode 67), Dzsudzsak
Ref: Karasev (RUS)