An overwhelming majority of House lawmakers voted to pass a sweeping sanctions package Tuesday evening that threatens to tie President Trump's hands in negotiations with Russia, and also punishes two other rogue regimes: Iran and North Korea.

"This is a strong, bipartisan bill that will increase the United States' economic and political leverage," House Foreign Affairs Chairman Ed Royce said Tuesday just before the House passed the measure 419-3.

House Speaker Paul Ryan, R-Wis., said after the vote that Congress has to take action against these "bad actors."

"Our job in Congress is to hold them accountable," he said. "The bill we just passed with overwhelming bipartisan support is one of the most expansive sanctions packages in history. It tightens the screws on our most dangerous adversaries in order to keep Americans safe." A bill that started out weeks ago as a vehicle for cracking down on Iranian belligerence turned into pack mule for lawmakers determined to guide U.S. foreign policy while navigating domestic politics. The Iran bill passed the Senate only after the addition of a Russia sanctions bill opposed by the Trump administration, before stalling in the House due to procedural fights.

When the dust settled, the bill was laden with a new batch of North Korea sanctions in addition to smaller tweaks.

"Our job isn't done obviously until we get this thing across the finish line. And we need to do that, because this bill is critical to our national security," New York Rep. Eliot Engel, the top Democrat on the Foreign Affairs panel, said Tuesday on the House floor. "It does far more than just send a message to leaders in Russia, Iran, and North Korea — it exacts a heavy price for their aggressive and destabilizing behavior."

The House previously approved the North Korea bill as a stand-alone item in a 419-1 vote, but it has yet to be taken up in the Senate, which has been consumed with debates over how to repeal Obamacare as well as Trump's political appointments. "I hope we don't face further delays when this bill gets back to the other house," Engel said.

The Russia and Iran components of the bill have run into a series of snags already, chiefly due to procedural issues. The original version of the Senate-passed bill violated a constitutional requirement that all legislation which raises revenue must start in the House. Once that was fixed, lawmakers clashed over how much power Democrats should have to force votes on bills that would condemn various decisions Trump might make while implementing the Russia sanctions.

The Russia language is a rare addition for sanctions bills, in that it allows Congress to vote down decisions by the White House to waive sanctions against Russia. Democrats said that language was critical given their skepticism that President Trump would maintain sanctions against Russia.

For weeks, Democrats said resolutions disapproving of Trump's decision to waive sanctions should be able to be called up by any lawmaker, including Democrats in the House. But the final language will let House GOP leaders decide whether or when to call up those resolutions.

Lawmakers praised the final product as a way to address national security threats to the U.S.

"North Korea and Russia and Iran all pose serious threats to our national security," Royce said. "Successive administrations have struggled and failed to address them, and it is well past time to respond with meaningful action."

Trump's team lobbied against the Russia sanctions as written, saying that Congress should give him more discretion when negotiating to improve relations with the former Cold War rival. But Congress has ignored those appeals, leaving them with a choice about vetoing or allowing the bill made all the more difficult by the fact that the Russia-related provisions are tied to Iran and North Korea sanctions.

"He's going to study that legislation and see what the final product looks like," White House press secretary Sarah Sanders told reporters Monday.

House passage sends the bill to the Senate, which is expected to approve it by a wide margin. The Senate approved the Russia and Iran language in a 98-2 vote, and passage by another veto-proof majority would force the Trump White House to accept the bill as is.