Eight senators of Trump’s Republican Party, which enjoys a majority, bucked their leadership to join Democrats in a resolution that bars any military action against Iran without an explicit vote from Congress.
"The Senate just sent a clear shot across the bow – a bipartisan majority of senators don't want the president waging war without congressional approval," Democratic Senate leader Chuck Schumer said after the vote.
The resolution will head to the Democratic-led House of Representatives, which passed a similar text last month.
Much like an earlier attempt by Congress to end US support for Saudi Arabia's devastating offensive in Yemen, Trump is nearly certain to issue a veto, with lawmakers lacking the two-thirds majority to overturn it.
Democratic Senator Tim Kaine introduced the resolution after Trump ordered a drone strike that assassinated Iran’s top commander Lt. Gen. Qassem Soleimani in Iraq on Jan. 3. The targeted killing concerned that the United States was rushing into another Middle East war without debate.
While warning of dire consequences of an escalating conflict with Iran, Kaine said his main point was to restore the authority of Congress to declare war, as spelled out in the US Constitution.
"An offensive war requires a congressional debate and vote. This should not be a controversial proposition," Kaine said in a speech on the Senate floor.
“The bill getting to his desk is an indication that we’re listening to our constituents, and we’re telling him blundering into another war would be a bad idea,” Kaine told a news conference after the vote.
Democratic Senator Tammy Duckworth put concerns about Trump more bluntly.
"My 21-month-old toddler has better self-control than this president does," she told reporters.
Tensions have soared between the United States and Iran since 2018 when Trump withdrew from a nuclear accord negotiated by his predecessor Barack Obama and imposed sweeping sanctions on Tehran.
Republican Senator Jim Inhofe denied Trump was seeking war and described the assassination of Soleimani as self-defense.
But eight Republicans – all of whom voted to acquit Trump in his impeachment trial – joined the Democrats.
Senator Susan Collins, a closely watched moderate Republican, said the resolution will show that "no president has the authority to commit our military to a sustained conflict."
Among other Republicans who voted yes was Mike Lee, who said a classified session by the Trump administration after the assassination of Soleimani was uninformative and the "worst" defense briefing he has ever received.
Republican Senator Todd Young, who voted for the resolution, said it should not have been necessary, but Congress had for years “attempted to pass the buck” to the president when decisions about military action had to be made.
“It’s time to do our job,” Young said in a statement explaining his vote.
AFP and Reuters contributed to this story.