The House of Representatives has voted in favour of billions of dollars in US military aid for Ukraine, after months of delay.
The measure had vocal opponents in Congress, and it took a fragile bipartisan deal to finally get it through the House.
There were cheers and applause in the House as it passed, with some Representatives waving Ukrainian flags.
The $61bn (£49bn) package passed by 311 votes to 112.
Republican House Speaker Mike Johnson said he wanted to push the measures through, even if it jeopardised his position.
Reacting to Saturday’s vote, Ukrainian President Volodymyr Zelensky: “I am grateful to the United States House of Representatives, both parties, and personally Speaker Mike Johnson for the decision that keeps history on the right track.
“Democracy and freedom will always have global significance and will never fail as long as America helps to protect it.
“The vital US aid bill passed today by the House will keep the war from expanding, save thousands and thousands of lives, and help both of our nations to become stronger.
The bill will now go to the Senate, where it is expected to pass possibly as soon as Sunday, before President Joe Biden signs it into law.
In a statement released after Saturday’s vote Mr Biden urged the Senate to approve it quickly “so that I can sign it into law and we can quickly send weapons and equipment to Ukraine to meet their urgent”.
Russian Foreign Ministry spokeswoman Maria Zakharova described America’s military aid to Ukraine as a “direct support for terrorist activities”.
Ukraine, which relies on Western weapons, desperately needs the aid as it struggles to contain invading Russian troops, who have been making steady advances in recent weeks.
Ukrainian soldiers are running so low on munitions. They are having to ration artillery shells on the more than 1,200km-long (745 miles) front line.
President Zelensky – who has also been asking for advanced air defences to defend Ukrainian cities against devastating Russian strikes – had warned that Kyiv could lose without American military aid.
Russian President Vladimir Putin launched a full-scale invasion in February 2022.
The House vote had been delayed by Republicans for months, with some objecting to sending money overseas instead of dealing with the US-Mexico border issue.
On Saturday, it was passed by a comfortable margin – but those numbers obscure the increasingly sharp partisan divides on the issue.
While all 210 Democrats voted in favour, more Republicans were against the legislation than in favour of it, 112 to 101.
That could spell trouble for Mike Johnson, who allied with Democrats to overcome procedural obstacles and bring the aid package to a vote in a rare weekend session.
Three House Republicans are already calling for him to be ousted as Speaker. They may even force a vote on the matter next week.
It also is a sign that Republican legislators in the House are increasingly sensitive to the shifting attitude from voters in their party toward Ukraine during this election year.
While the billions of dollars in new aid is expected to sustain the Ukrainian war effort in the months ahead, if Republicans gain more power in Congress – or take back the White House – further US support seems increasingly unlikely.
The House also passed a funding package worth $26.4bn (£21.3bn) for Israel, which is continuing its offensive in Gaza and is involved in a military confrontation with Iran. The aid includes funding for humanitarian operations.
Separately, the House passed an $8.1bn aid package for the Indo-Pacific region. Those funds are mainly designed to deter Chinese aggression, particularly against Taiwan.
Other measures include new rules that could see the US ban TikTok unless its Chinese parent company sold the app.
The House also backed new sanctions on China, Russia and Iran, as well as provisions to sell frozen Russian assets to generate revenue for Ukraine.