Lawmakers voted 49-44 to support the resolution that passed Congress earlier this year, short of the two-thirds majority necessary to override the president’s veto of what he called a “very insulting” effort to curb his powers.
That bipartisan resolution said the president cannot commit US forces to hostilities against Iran or any part of its government or military without explicit authorization from Congress.
Trump has preached the need for a drawdown of American military entanglements abroad, but has ramped up an increasingly hostile relationship with Iran.
His administration has imposed crippling economic sanctions on Tehran.
In January. Trump ordered a drone strike that killed Iran’s most powerful general, Qassem Soleimani, at the Baghdad airport.
The assassination inflamed tensions between the two countries.
Soleimani was widely seen as the architect of Iran’s destabilizing activities around the world, but Democrats and experts condemned the decision to kill him as disproportionate and provocative.
Republican Senate Majority Leader Mitch McConnell stood by the president.
“We must maintain the measure of deterrence we restored with the decisive strike on Soleimani,” McConnell said before the vote.
“That starts today with upholding the president’s rightful veto of a misguided war powers resolution.”
Senate Democrat Tim Kaine said Trump has a “fundamental misunderstanding” of the congressional mandate on matters of war.
“We’re not required to play ‘mother may I’ with the president,” Kaine said. “We have our own independent responsibilities that we swear to uphold.”
The Trump administration claims it has put Iran back in its box.
But a recent verbal escalation following an incident between US ships and Iranian speedboats in the Gulf showed that tensions remain high.
Trump’s move is the second time he has vetoed congressional restrictions on his military initiatives.