The Senate on Wednesday passed a $612 billion annual defense policy bill for 2016, which President Obama has threatened to veto.
It passed in a 70-27 vote, sending it to the president's desk.
Ahead of the final vote, Senate Minority Leader Harry Reid, D-Nevada, raised a budget point of order against the legislation, which he said violates budget law and is "not fiscally responsible."
Senate Armed Services Committee Chairman John McCain, R-Arizona, then moved to waive Reid's point of order, creating another 60-vote procedural hurdle before final passage.
The House passed the legislation last week after negotiators from both chambers reached a bicameral deal.
The White House objects to the bill, because it would circumvent defense spending caps put in place in 2011, by $38 billion. The National Defense Authorization Act (NDAA) would add nearly $90 billion into the Pentagon's overseas contingency operations (OCO) account that is used to fund military operations abroad. Many lawmakers describe the account as a "slush fund."
If Mr. Obama were to follow through on his veto threat, it could create a headache for the administration as it faces criticism over its policies battling the Islamic State in Iraq and Syria (ISIS). The bill sets the U.S. military's policies and priorities each year.