A compromise in the US Senate means America's third major spending package to deal with the impact of the coronavirus pandemic can move forward.
The $1.9tn (£1.4tn) plan has been championed by President Joe Biden as a way to help struggling citizens.
Democrats in the Senate compromised over the issue of federal unemployment benefit, lowering it from $400 to $300 a week but extending it to 6 September.
The Senate's final vote on the package is expected in the coming days.
"Now that this agreement has reached, we are going to power through the rest of this process and get this bill done," Senate Majority Leader Chuck Schumer predicted.
Mr Biden's Democrats and their allies have an effective majority in the evenly split Senate due to Vice-President Kamala Harris's casting vote.
But the tiny margin means they need every Democratic senator to support their plans.
America's worst public health crisis in a century has left nearly 523,000 people dead and 29 million infected, with a current unemployment rate of 6.2%.
Why was unemployment benefit a sticking point?
When the Democrat-controlled House of Representatives passed the bill last week, it called for a $400 weekly federal top-up of unemployment benefits to last until 29 August.
However, moderate Democratic Senator Joe Manchin objected on the grounds that the huge bill might overheat the economy.
It took 11 hours of negotiation to come up with the deal.
"We have reached a compromise that enables the economy to rebound quickly while also protecting those receiving unemployment benefits," Sen Manchin said.
The amendment was adopted by 50 votes to 49.
While Republicans broadly backed the two previous stimulus plans, passed when they controlled both the White House and the Senate under Donald Trump, they have criticised the cost of Mr Biden's bill.
The measures include direct payments of up to $1,400 to most Americans and money for vaccines, testing, local government, schools and the airline industry, as well as subsidies for health insurance.
One Democratic proposal that was rejected by the Senate was an attempt to raise the minimum wage from $7.25 to $15 an hour over five years, with eight Democratic senators siding with the Republicans to vote it down.