Boris Johnson’s controversial bid to override parts of the Brexit deal has cleared a major hurdle in parliament.
The prime minister had been expected to win the key vote on his Internal Market Bill, given the Conservatives’ large majority in the House of Commons.
MPs voted for the proposed legislation by 340 to 263 – a majority of 77.
Several Tory backbenchers earlier vowed to either abstain or vote against the government, after a minister admitted the bill “does break international law”.
All five living former prime ministers – three of them Conservative – also expressed serious reservations, with David Cameron making a rare intervention on Monday to explain his “misgivings”.
And a senior Conservative MP, Rehman Chishti, resigned as a special envoy, citing “real concerns” about the UK breaking its commitments under the Withdrawal Agreement struck with the EU last year.
Mr Johnson kept the vast majority of his party on side by saying the most controversial part of the bill may “never be invoked” if a trade deal is struck with Brussels.
“It’s a protection, it’s a safety net, it’s an insurance policy and it’s a very sensible measure,” he said.
The prime minister also accused Brussels of going to “extreme and unreasonable lengths” over the part of the withdrawal agreement affecting Northern Ireland, which he said could lead to “blockading food and agriculture transports within our own country”.
But there was significant anger from some Tory backbenchers, including Andrew Mitchell who warned against “incalculable damage to our reputation all around the world” and Charles Walker who said: “If you keep whacking a dog, don’t be surprised when it bites you back.”
The fresh row over Brexit erupted last week, when Downing Street revealed plans to give ministers power to alter key elements of the deal which they said were “critical” to ensuring unrestricted access for goods from Northern Ireland to the rest of the UK.
The bill passed its first major hurdle known as “second reading”, but will still have to clear several other stages before becoming law before the transition period runs out at the end of 2020.
On Tuesday, it will go into “committee stage” – where the bill is gone through line by line – before a final, “third reading” in the Commons after which it will head to the House of Lords.
Only when it has gone through the same stages among peers will it get “royal assent” and be signed into law by the Queen.