Police scuffled with protesters in Paris and fired teargas and water cannon in the western city of Nantes as strikes broke out across France on Thursday in a challenge to President Emmanuel Macron's economic reforms.
Train conductors, teachers and air traffic controllers walked out to join more than 150 mostly peaceful marches in cities and towns - the first time public sector workers have joined rail staff in protests since Macron came to office in May.
"It's a real mess," said Didier Samba, who missed his morning commuter train to the suburbs and had more than an hour's wait for the next at Paris' Gare du Nord station.
Sixty percent of fast trains, 75 percent of inter-city trains and 30 percent of flights to and from Paris airports were cancelled because of the strike.
About 13 percent of teachers walked off the job, the education ministry said, closing many primary schools. Electricity generation dropped by more than three gigawatts, the equivalent of three nuclear reactors, as those workers joined the strike, stoking government fears that the work stoppages could spread.
Public sector workers are angry with plans to cut the public sector headcount by 120,000 by 2022, including via voluntary redundancies, and about the introduction of merit-based pay.
Railway workers are worried by government plans to scrap job-for-life guarantees, automatic annual pay rises and generous early retirement.
"Discontent and worry are spreading very quickly," said Jean-Marc Canon of UGFF-CGT, one of the largest unions.
While rail workers have planned a three-month rolling strike starting April 3, public sector workers have no plans yet for further action, but they will meet next week to consider it.
"Let me tell you that public sector workers are very mobilised," Laurent Berger, the head of France's largest union, the CFDT, told RTL radio.
Opinion polls show a paradox: a majority of voters back the strike but an even bigger majority back the reforms, including cutting the number of public sector workers and introducing merit-based pay.
That has led the government, which overhauled labour laws last year and is crafting a series of other reforms to unemployment insurance and training, to say it will stand by its plans, while keeping a close eye on protests.
On Tuesday, following a retirees' march, Prime Minister Edouard Philippe said the government would change tack for the poorest 100,000 out of 7 million pensioners concerned by a tax hike, in a sign that a government that prides itself on being firm on reforms can make exceptions.
"What we need to avoid is that all the grievances fuse together, as was the case in 1995," a government official said, referring to France's biggest strike in decades, which forced the government at the time to withdraw reforms after striking public and private sector workers received huge popular support.
"The situation is very different from 1995. At the time there was a big discrepancy with what the government had promised during the elections and what they eventually did."
Government officials may also have in mind the fact that the May 1968 revolt that convulsed France started 50 years ago, with a student protest at Nanterre university which few at the time expected to trigger unrest that blocked France for weeks.
Police fired teargas and water cannon at a group of hooded protesters who were hurling stones at them in Nantes.
The rest of the morning rally in Nantes was peaceful, with protesters marching behind a banner that read "All together against austerity, let's defend public services."
In Paris, police reported scuffles with young protesters ahead of rallies in the city, with a few shop windows damaged.