The US Senate has approved a $95bn (£75bn) foreign aid package after months of political wrangling, but it faces an uphill battle in the House.
While Senate Democrats were in favour of passing the bill, Republicans were divided and previously voted it down.
The package has $60bn for Ukraine, $14bn for Israel's war against Hamas and $10bn for humanitarian aid in conflict zones, including in Gaza.
But the House of Representatives Speaker suggested he might block it.
The package, which includes more than $8bn for Taiwan and other Indo-Pacific allies, passed the Democratic-controlled Senate by 70 to 29 in a predawn vote on Tuesday.
Twenty-two Republicans, including Senate Minority Leader Mitch McConnell, joined the other side of the aisle to approve the legislation.
The bipartisan support came despite former President Donald Trump's criticism of the bill for its lack of funding to secure the US-Mexico border.
Speaking on Tuesday afternoon from the White House, President Joe Biden urged House Republicans to pass the measure.
"Supporting this bill is standing up to Putin. Opposing it is playing into Putin's hands," Mr Biden said. "History is watching."
Mr McConnell, a Kentucky senator, said in a statement following the vote: "Today, on the value of American leadership and strength, history will record that the Senate did not blink."
Ukraine's leader said he was "grateful" to senators.
"For us in Ukraine, continued US assistance helps to save human lives from Russian terror," President Volodymyr Zelensky posted on X, formerly Twitter.
The war has broadly reached a stalemate, despite Russian attempts to advance in the eastern Donbas region and Ukrainian attacks in the south.
Officials in Kyiv want more military aid, especially new air defences, after President Vladimir Putin pledged to "intensify" the assault.
But conservative Republicans have objected to sending billions overseas without first tackling the migrant crisis on the southern US frontier.
"Shouldn't we try to fix our own country first?" Senator Rand Paul of Kentucky said on Monday.
He was one of several Republican opponents who gave speeches in a bid to slow down passage of the measure.
Some left-wing lawmakers, including Democrat Jeff Merkley of Oregon and independent Bernie Sanders of Vermont, also voted against the bill, citing concerns about supporting Israel's bombing of Gaza.
The aid bill is a stripped-down version of a $118bn package that Senate Republicans voted down last week.
Republicans had initially demanded any foreign aid be tied to more security measures at the southern border.
But after Mr Trump came out against the border provisions, Republicans were divided on the package.
Some lawmakers said border measures could be added back into the current version of the legislation.
Republican House Speaker Mike Johnson suggested in a statement on Monday night the new bill would not pass the Republican-controlled lower chamber of Congress without such provisions.
"House Republicans were crystal clear from the very beginning of discussions that any so-called national security supplemental legislation must recognise that national security begins at our own border," he said.
The Louisiana congressman said lawmakers "should have gone back to the drawing board" with the legislation to focus on border security.
Mr Johnson and the House Republican leadership will have to decide whether to bring the package to a vote in that chamber, attempt to amend it and send it back to the Senate, or to ignore it entirely.
That last option could prompt those House Republicans who support Ukraine military assistance to join Democrats in filing a discharge petition.
This is a rare parliamentary procedure that would circumvent Mr Johnson and force a vote.
On Tuesday, Democratic House Minority Leader Hakeem Jeffries vowed to "use every available legislative tool" to pass the bill.
He added he believes there are "more than 300 bipartisan votes" in the House for the foreign aid package.
Some on the left may baulk at the military aid for Israel in the package, however, which would make such a manoeuvre - requiring the support of a majority in the House - more difficult.
After the Senate vote, Mr Johnson said his chamber "will have to continue to work its own will on these important matters".
He could divide the different pieces of aid into separate components, or add conservative US immigration reforms.
Mr Johnson will be hard-pressed to convince his narrow House majority, which is sharply divided on aid to Ukraine, to follow his lead, however.
At a Tuesday news conference, Democratic Senate leader Chuck Schumer said he hoped to speak to Mr Johnson in the coming days and convince him how urgent it was for the House to pass the measure.
The New York senator earlier hailed passage of the bill, saying they were "telling Putin he will regret the day he questioned America's resolve".
The US is one of the largest providers of aid to Ukraine. The White House asked Congress months ago to pass a bill that included foreign aid.
This could be Congress's last shot at passing Ukraine aid for the foreseeable future, and Ukraine has warned it may not be able to successfully defend itself against Russia without Washington's backing.