Hungary blocks new funding just hours after a deal is struck on starting talks to admit Ukraine to the EU.
Hungary has blocked €50bn ($55bn; £43bn) in EU aid for Ukraine hours after agreement was reached on starting membership talks.
“Summary of the nightshift: veto for the extra money to Ukraine,” Hungarian Prime Minister Viktor Orban posted on social media after talks in Brussels.
EU leaders said talks on aid for Ukraine would resume early next year.
Ukraine is critically dependant on EU and US funding as it continues to fight occupying Russian forces.
The aid blocking was announced by Mr Orban shortly after the EU leaders decided to open membership talks with Ukraine and Moldova and to grant candidate status to Georgia.
Hungary has long opposed membership for Ukraine but did not veto that move.
Mr Orban left the negotiating room momentarily in what officials described as a pre-agreed and constructive manner, while the other 26 leaders went ahead with the vote.
A spokesperson for Charles Michel, president of the European Council, said the agreement had been unanimous.
Ukraine’s President Volodymyr Zelensky hailed the EU decision on membership talks as “a victory” for his country and “Europe”.
Commenting on Mr Orban’s opposition to the aid, Dutch Prime Minister Mark Rutte said: “We still have some time, Ukraine is not out of money in the next few weeks.”
“We agreed with the 26 countries,” he added. “Victor Orban, Hungary, were not yet able to do that. I am fairly confident we can get a deal early next year. We are thinking of late January.”