France's government moved to force through President Emmanuel Macron's pension reform on Thursday, invoking special powers to override bitter objections from MPs.
Amid boos and heckles in the National Assembly, Prime Minister Elisabeth Borne announced that a nuclear option known as article 49.3 would be used to pass the bill without a vote.
It came moments before MPs were due to vote on the final text of the bill, which raises France's retirement age from 62 to 64.
Mr Macron's party lacks a majority and the result of any vote was seen as being on a knife-edge.
"We can't take the risk of seeing 175 hours of parliamentary debate come to nothing," Ms Borne said.
Opposition MPs immediately announced a no-confidence vote, accusing Mr Macron's government of an undemocratic move.
A no-confidence motion is the last chance to sink the bill and could in theory lead to new elections, but may not get a majority.
Far-right leader Marine Le Pen called the move a sign of “total failure” for Mr Macron and led calls for Ms Borne to resign.
The upper house, the Senate, had earlier backed Mr Macron's bill by 193 votes to 114.
But it has met fierce opposition from left-wing and far-right MPs in the National Assembly and unleashed strikes that have left rubbish piling up on Paris streets.
One trade union claimed 1.7 million people took to the streets across France in the latest round of protests. The Interior Ministry's count was 480,000. Trains, schools, public services, ports and oil refineries have all been affected by strikes.
Unions warned that the unrest will continue regardless of developments in parliament.
“If the reform is passed, the anger and protest will not end,” union boss Laurent Berger told French television. “There will be a sequel.”
Paris police were set to requisition workers to clean up the streets despite left-wing mayor Anne Hidalgo refusing the request.
She said the pension bill should be withdrawn because it “mistreats workers”.
The bill raises the pension age to 63 from 2027 and 64 in 2030, with some exemptions for people with unusually long careers.
Mr Macron and his allies say the bill is necessary to cut the costs of France's welfare state.
A final legal text emerged from negotiations shortly before 3am, paving the way for Thursday’s votes, but supporters of the bill had no clear majority despite extensive lobbying by Mr Macron's camp.
“We are making an indispensable reform to assure the financing of our pensions,” said Aurore Berge, who leads Mr Macron’s party in the assembly.
The reform is the centrepiece of Mr Macron’s second-term agenda and failure to pass it would be seen as a damaging blow to his authority.
The government had insisted it would have preferred a vote to invoking article 49.3, a move sure to intensify public anger.
One poll published on Wednesday showed 78 per cent of French people saying it would be unjustified to ram the bill through.
Left-wing MP Damien Maudet had said the use of article 49.3 would be undemocratic and set “a dangerous precedent”.
France’s unrest has come alongside widespread strikes across Europe. In Britain on Wednesday, trains were affected as staff on the London Underground walked out. In Greece, flights were grounded amid strikes in protest over a deadly train crash last month.