
The bill states some employees, like rail and healthcare workers would have to work during industrial action, and could lose their job if they refuse.
The bill was passed in the House of Commons by 315 votes to 246, but will face further scrutiny in the House of Lords before it becomes law.
The Labour party’s deputy leader Angela Rayner said the bill would give the government the power to threaten key workers with the sack on a “whim”.
Some unions have said the bill is an attack on their right to strike, and have threatened legal action if it passes through government.
Labour had sought to amend the bill to preserve existing protections for striking workers from unfair dismissal but this was defeated.
Ms Rayner accused the government of rushing the bill through Parliament, meaning it could not be properly scrutinised by MPs.