The Swiss, with 27 points from nine games in European Group B, will now travel to Lisbon needing a draw away to Portugal to clinch top spot and a direct place in Russia.
However, they will be overhauled if they lose to the European champions who have won eight straight matches since their 2-0 defeat in Basel at the start of the campaign in September last year. Gulacsi gifted the Swiss an 18th minute opener when he took a heavy first touch to control a straightforward back pass, slipped as he tried to regain his ground and allowed Granit Xhaka to steal the ball and score.
Fabian Frei added to Gulacsi’s misery two minutes later by finishing off a flowing move with a side-footed shot which deflected off Barnabas Bese.
Brimming with confidence, the Swiss should have had a third when Xherdan Shaqiri sent a low ball across the face of the Hungary area but Haris Seferovic contrived to miss from point-blank range.
The Swiss refused to let up and, after they won possession just outside the Hungary area, Shaqiri slipped ball to Steven Zuber who slotted his shot past Gulacsi for the third in the 43rd minute.
Zuber struck again four minutes after the break following another mistake by Gulacsi who got a hand to the Swiss player’s dipping shot only to see it drop into the net.
Richard Guzmics pulled one back in the 58th minute with a hooked effort although Gulacsi’s opposite number Yann Sommer was at fault for only palming away a corner.
Stephan Lichtsteiner drilled home Switzerland’s fifth in the 83rd minute before Roland Ugrai pulled another back for Hungary after Sommer flapped at another corner on an unhappy night for goalkeepers.
(Reporting by Brian Homewood; Editing by Rex Gowar)