France’s National Assembly has approved a law allowing same-sex couples to marry and adopt children. After days of intense debate, the bill was passed by 329 votes to 229. It must now win final approval in the Senate.
The “Marriage for All” bill was backed by President Francois Hollande’s Socialists and other left-wing MPs.
But it was opposed by many in the opposition conservative UMP and provoked months of mass protests and counter-protests.
The result of the vote was greeted with cheers and applause from left-wing MPs, the BBC’s Hugh Schofield in Paris reports.
The assembly had already approved a key article that redefined marriage as a contract between two people rather than between a man and a woman.
The Senate – which is also dominated by the Socialists and their allies – is thought likely to back the measure, which will become law by May or June, our correspondent says.
France would then join 11 other countries where same-sex marriage is legal.
The marriage law is seen as France’s most important social reform in France since the abolition of the death penalty in 1981.
Supporters argue that it is a vital step in meeting France’s historic commitment to equality.
But it has provoked intense opposition from the Catholic Church, as well as from many French Muslims, who see it as an attack on the traditional family.
Opinion polls suggest that around 55-60% of French people support gay marriage, though only about 50% approve of gay adoption.