The US Senate has authorised more spending for the Iraq war, without tying the bill to a timetable for troop withdrawal - a key Democratic demand.
Democrats had said funding must be tied to a pullout timetable
In a 90-3 vote, it approved a further $189bn (£94bn) for the campaigns in Iraq and also in Afghanistan.
Democrats, who have a 51-49 majority in the Senate, accepted the measure after failing to impose the timetable demand.
The bill had passed in the House of Representatives. President Bush is now expected to sign it into law.
The bill covers the budget year ending in September 2008.
In total, it authorises $696bn (£345bn) in military spending, including the $189bn for Iraq and Afghanistan.
While it does not send money to the Pentagon, it is seen as a crucial policy measure as it guides companion spending legislation and dictates the acquisition and usage of weapons programmes.
The approval of the bill reflected the failure - yet again - by the Democrats to overcome Republican objections in the Senate, which required 60 votes.
Republicans expressed their satisfaction with the Senate vote.
"I was pleased to see... no policy changes to the Petraeus plan," said Senate Minority Leader Mitch McConnell.
He was referring to the US chief commander in Iraq, Gen David Petraeus, whose plan for a troop "surge" in Baghdad has been credited with reducing violence.
President George W Bush has asked Congress for extra emergency funding for operations in Iraq and Afghanistan.
Defence Secretary Robert Gates warned that if the money was not approved, funds would run out by February.
The bill also expands the size of the US armed forces and sets conditions on Washington's plans to build a missile defence system in Poland and the Czech Republic.