The Hungarian Parliament has voted by 137 to 53 to accept the government's request for the power to rule by decree during the coronavirus emergency.
The law contains no time limit.
Prime Minister Viktor Orban promised to use the extraordinary powers he has been granted "proportionately and rationally".
The leader of the opposition Jobbik party, Peter Jakab, said that the law placed the whole of Hungarian democracy in quarantine.
Monday's vote was controversial - more than 100,000 people had signed a petition against the move.
But Prime Minister Viktor Orban's conservative Fidesz party has a strong majority.
The special powers have no time limit and critics say independent journalists could face jail.
According to a survey by the pro-government polling agency Nezopont, 90% of the public want the current emergency measures extended and 72% agree that the criminal code should be strengthened.
Read more on Hungary:
But opposition parties and human rights groups accuse the government of including several extreme measures in the law, which they argue no opposition party in any democracy could ever agree to.
These include reducing democratic control over those measures, and threatening journalists with imprisonment for just doing their job.
In that sense, they see the law as a political trick by the government. When the opposition votes against it, they can be accused of being traitors, in the nation's hour of need.
A pro-Fidesz analyst, Zoltan Kiszelly, told the BBC "the government wanted to have a free hand in dealing with this pandemic, that’s why they wanted to have this power.
"But there is … no intention of the government to limit freedom of speech or freedom of the media."
A hate campaign in government media against independent news outlets has alarmed journalists.
"When anger and resentment is incited against us in the media, it serves only to demean and silence the voices of those who have heroically taken their places on the frontlines of public health," wrote Peter Magyari in 444, a critical news portal.