In a special session that dragged on into the wee hours of Saturday morning Bill C-89 passed third reading by a vote of 166 to 43.
Now the Senate will sit today and possibly tomorrow to deal with the bill.
It will go into effect at noon eastern time on the day following royal assent.
The NDP and labour leaders are accusing the Trudeau government of undermining the collective-bargaining process.
The Canadian Union of Postal Workers says the bill is unconstitutional, and is threatening to challenge it in court.
The union's rotating strikes have caused massive backlogs of unsorted mail and packages, which Canada Post says could take weeks to clear.