Bicycles burn during a protest outside the Paris City Hall, Friday, April 14, 2023 in Paris. AP
The alterations became law after the text was published before dawn in France's official journal, with the livid opposition claiming that Macron had moved to smuggle it through in the middle of the night.
The publication came just hours after the approval on Friday by the Constitutional Council of the essence of the legislation, including the headline change of raising the retirement age from 62 to 64.
The standoff with unions and the left has become the biggest challenge of the second mandate of Macron, who will now address France on the crisis on Monday evening, the Elysee said.
Trade unions warned they were calling for mass Labour Day protests on May 1, and sometimes violent demonstrations erupted in several cities including Paris overnight after the court verdict was announced.
Socialist leader Olivier Faure said that Macron's swift signing of the law showed "disdain" towards the protest movement while hard-left MP Francois Ruffin called it a "democratic hold-up".
"A law enacted in the middle of the night, like thieves," tweeted French Communist Party chief Fabien Roussel. "Everyone on the street May 1."
"Macron tried to intimidate all of France in the middle of the night," tweeted hard-left leader Jean-Luc Melenchon, calling Macron a "thief of life" who showed an "absurd display of arrogance".
The night-time announcement "confirms the violent contempt of the president both for the population and in particular for the trade unions," said the leader of the CGT union Sophie Binet.
The western city of Rennes -- where the entrance to a police station was set on fire the night earlier -- was again the scene of clashes Saturday afternoon as police used tear gas on projectile-throwing protesters, AFP correspondents said.
A bank was damaged while radical protesters also stormed the lobby of a luxury Mercure hotel. One policeman was injured and eight people arrested.
"Not defeated"
The nine-member Constitutional Council ruled in favour of key provisions of the pension reform, including raising the retirement age to 64 and extending the years of work required for a full pension, saying the legislation was in accordance with French law.
Six minor proposals were rejected, including forcing large companies to publish how many over-55s they employ, and the creation of a special contract for older workers.
The appearance of the text in France's Official Journal -- the gazette of record -- means it has now been enacted into law.
"The Social Security Code is thus amended. In the first paragraph, the word: 'sixty-two; is replaced by the word: 'sixty-four'," states the text, referring to the retirement age.
But the constitutional court's decision could prove a hollow victory for Macron, as analysts say it has come at a major personal cost for the 45-year-old.
The president's approval ratings are near their lowest levels ever, and many voters have been outraged by his decision to ram the pensions law through parliament without a vote, using a legal but controversial mechanism denounced by opponents as anti-democratic.
Polls consistently show that two out of three French people are against working a further two years.
Macron has called the change "necessary" to avoid annual pension deficits forecast to hit 13.5 billion euros ($14.8 billion) by 2030, according to government figures.
France lags behind most of its European neighbours, many of which have hiked the retirement age to 65 or above.
"Stay the course. That's my motto," Macron said Friday as he inspected Notre Dame Cathedral in Paris, four years after a devastating fire nearly destroyed the gothic monument.
Government spokesman Olivier Veran said Macron's address Monday evening would be in the spirit of "pacification".
But the left-wing Liberation daily said in its headline above a picture of a protest: "Not defeated: opponents of the reform are not going to disarm".
"Tidal wave" on May 1
Binet and other union bosses have called for a "popular and historic tidal wave" of people on the streets to oppose the reforms on May 1.
Unions rejected an offer by Macron for talks on Tuesday, saying they would only meet after May 1.
Last month, a strike by Paris garbage workers left the capital strewn with 10,000 tonnes of uncollected rubbish.
As a prelude to the May 1 protests, railway unions are calling for a day of "railway anger" on April 20.
In a second decision on Friday, the constitutional court rejected a bid from opposition lawmakers to force a referendum on an alternative pension law that would have kept the retirement age at 62.
Short link: