The senate, the upper house of the French parliament, Friday voted 177 to 153 to approve measures, including a rise in the official retirement age from 60 to 62, The Guardian newspaper reported.
The lower house, the national assembly, has already given its nod to the bill which has caused a wave of demonstrations and strikes by workers at oil refineries, leading to traffic chaos and petrol shortages in the country in the past few weeks.
The vote came after the right-of-centre government of President Sarkozy used emergency clauses in the constitution to push through the reforms. The reforms had been stalled in the senate for three weeks after opposition members tabled hundreds of amendments for the legislation.
Following Saturday's vote, one final vote will be conducted by both the houses next week before the reform becomes law. "This is a serious moment because it is clear, responsible and courageous," Labour Minister Eric Woerth said during the debate. "It is not by looking to the past that we will preserve our social model."
Jean-Pierre Bel, the opposition spokesman in the senate, warned the government: "You haven't finished with pensions. You have ignored what the French people have expressed, you have listened to none of our proposals. Your reform is unfair."
Pierre Laurent, the leader of the Communist party, said: "This ultimate provocation will not stop the will of the people, and cannot but increase the protests."
Meanwhile, the government has sent in riot police to clear the blockades at some of France's 12 oil refineries. Student unions have called for a further day of action next Tuesday, urging students to organise sit-ins at their schools and colleges.