The law affects some 77,000 workers in Quebec's industrial, institutional and commercial construction sectors. Workers in other sectors, including residential construction and road work, were able to reach deals last week.
The bill took 15 hours to get approved in Quebec's minority parliament.
The opposition parties rallied together to force Premier Pauline Marois' government to significantly alter the law it originally proposed. Agnes Maltais, Quebec's labour minister, even threatened to withdraw the bill and later offered a compromise.
In the end, the opposition got what it wanted — a one-year extension of the collective agreement with a two per cent wage increase, rather than the PQ's plan for a four-year deal with increases of two per cent or more annually.
The bill passed shortly before 1 a.m. Monday morning.
Marois argued that the construction unions and companies should have at least two years to reach another agreement. Otherwise, she said, "we run the risk of falling back into conflict."
But the opposition Liberals and Coalition party said extending the collective agreement for a single year would be favourable, leaving it up to the unions and construction companies to reach new deals on their own in the future.
Francois Legault, the head of the Coalition, called the PQ's proposal for a four-year deal "unreasonable" and said it wasn't up to government to decide what's good for the industry.
The original bill proposed by the PQ on Sunday morning would have meant an agreement along the lines of the one reached last week in the civil engineering and road construction sector.
Wages would have increased by two per cent in the first year, 2.1 per cent the year after, 2.2 per cent in the third year and 2.3 per cent in the final year.
The provincewide construction strike began June 17.
It halted numerous projects, including work on Montreal's two super hospitals, among the largest construction projects in Canada.
The Liberals and Coalition party both accused the PQ of failing to introduce legislation quickly enough. They argued the strike caused unnecessary delays and the economic consequences will be significant.
Only the left-wing Quebec solidaire, which holds a single seat in the legislature, voted against the bill.