Approved by a vote of 221-205, Bush will get $42.8 bn in emergency military funds for the wars in Iraq and Afghanistan, and related activities.
An additional $52.8 bn will have to be approved by Congress in late July, after Bush submits progress reports on the war.
Congress would then decide whether to use this second instalment of money to continue the wars or start moving US troops out of Iraq.
Also on Thursday, Bush, pressured by sagging opinion polls, offered to accept benchmarks instead of a timetable for troop withdrawal for measuring the progress in Iraq.
"Time's running out, because the longer we wait the more strain we're going to put on the military," he said.
James McGovern, a Democrat pushing for a nine-month withdrawal timetable, labelled the war a "terrible tragedy" and said it was time to bring it to an end.
"For four long, deadly years, this administration and their allies in Congress have been flat wrong about Iraq," he added.
But Republicans argued that a withdrawal would be disastrous.
"Now is not the time to signal retreat and surrender. How could this Congress walk away from our men and women in uniform," said Jerry Lewis, a Republican.
The Senate is reportedly working on a somewhat different bill that might provide the $100 bn in war funds at once, as the Bush administration has requested.
In recent weeks Bush and leading members of Congress have been pushing the Iraqi government to show progress in attaining stability through political reconciliation among the Iraq's Shia, Sunnis and Kurdish population.