Trump vetoes congressional resolution restricting Iran war powers, slams it as "very insulting"
In a statement, Trump said he had used his veto because the resolution - a rare bipartisan rebuke to the president approved in March - was based on "misunderstandings of facts and law."
The measure stemmed from fears among both Trump's Republicans and Democrats that the White House was stumbling into war with the Islamic republic.
In the statement, Trump says Congress misinterpreted his constitutional authority as being limited to "defense of the United States and its forces against imminent attack."
"That is incorrect," he said.
"We live in a hostile world of evolving threats, and the Constitution recognizes that the President must be able to anticipate our adversaries' next moves and take swift and decisive action in response. That's what I did!"
The resolution said the US president cannot commit his military to hostilities against Iran or any part of its government or military without explicit authorization from Congress.
Supporters said they wanted to ensure that Congress had the unique power to declare war, as outlined in the US Constitution.
Trump has preached the need for a drawdown of American military entanglements abroad, but has ramped up a 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 has inflamed tensions between the two countries.
Soleimani was widely seen as the architect of destabilizing activities by Iran around the world, but Democrats and many experts condemned the decision to kill him as disproportionate and provocative.
Tehran retaliated with a strike against bases used by the US military in Iraq without causing any fatalities, easing fears of a dramatic escalation.
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.
Read more: Trump tweets he's ordered US Navy to 'shoot and destroy' Iranian gunboats
Democratic Senator Tim Kaine hit out at Trump for blocking the resolution.
"I urge my colleagues to join me in voting to override his veto - Congress must vote before sending our troops into harm's way," he tweeted.
To override a veto, two-thirds of the members of both houses of Congress must vote to do so - unlikely, given the Republican majority in the Senate.
It is the second time Trump has vetoed an attempt by Congress to control his military initiatives.