Ciprian Marica and Mihai Pintilii put the hosts in control before half-time and Cristian Tanase rounded off the win late on. The result saw Romania move ahead of the Magyars into second place behind runaway Group D leaders Netherlands.
Romania made a dream start when their first attack ended with Marica finding the bottom corner of the net from 20 yards. Alexandru Bourceanu then warmed visiting keeper Adam Bogdan's palms before Hungary went forward for the first time, Jozsef Varga shooting wide.
Romania's Gabriel Torje volleyed over from a corner and Alexandru Maxim was off target with a free-kick after Torje was fouled just outside the penalty area. Pintilii fired a powerful long-range shot over the bar but had better luck just after the half-hour when he opted for precision and superbly curled home after Marica teed him up 25 yards out.
Such were Hungary's struggles that coach Sandor Egervari sent on substitute Tamas Hajnal in the 34th minute, Zsolt Korcsmar making way. The newcomer's drive was tipped over by Ciprian Tatarusanu but there was no change to the scoreline before half-time.
The third quarter of the game passed almost without incident before Romania's Bogdan Stancu sprang into life with a 20-yard shot which forced a good save from Bogdan. Cristian Tanase's corner was headed over by Dorin Goian and Marica also headed over the bar and then sent a 20-yard shot wide.
Hungary's best chance of pulling a goal back was when Szalai curled a free-kick over, and they conceded a late third to set the seal on defeat. Substitute Tanase was the scorer, his 20-yard effort skimming into the bottom corner of the forlorn Bogdan's net with two minutes remaining.