MPs have voted by 413 to 202 – a majority of 211 – for Prime Minister Theresa May to ask the EU for a delay to Brexit.
It means the UK may not now leave on 29 March as previously planned.
Mrs May says Brexit could be delayed by three months, to 30 June, if MPs back her deal in a vote next week.
If they reject her deal again then she says she will seek a longer extension – but any delay has to be agreed by the 27 other EU member states.
Most Conservative MPs voted against delaying Brexit – including seven cabinet members – meaning Mrs May had to rely on Labour and other opposition votes to get it through.
But some Labour frontbenchers resigned to defy party orders to abstain on a vote on holding another referendum.
Shadow housing minister Yvonne Fovargue, shadow education minister Emma Lewell-Buck, shadow business minister Justin Madders, Ruth Smeeth, a shadow ministerial aide, and Labour whip Stephanie Peacock, all quit their roles to oppose one.
Theresa May, who has long insisted that the UK will leave the EU on 29 March with or without a withdrawal deal, voted to delay Brexit.
She had been forced to offer MPs a vote on delaying Brexit after they rejected her withdrawal agreement by a large margin, for a second time, and then voted to reject a no-deal Brexit.
She has warned that extending the departure date beyond three months could harm trust in democracy – and mean that the UK would have to take part in May’s European Parliament elections.
Downing Street said the government was still preparing for a no-deal Brexit.
Theresa May is planning to hold another “meaningful vote” on her withdrawal deal by Wednesday – after it was overwhelmingly rejected on two previous occasions.
If she wins that vote, she will ask for a one-off extension to Brexit get the necessary legislation through Parliament at an EU summit on Thursday – if not she could ask for a longer extension.
A spokesman for the European Commission said extending Article 50, the mechanism taking the UK out of the EU on 29 March, would need the “unanimous agreement” of all EU member states.
And it would be for the leaders of those states “to consider such a request, giving priority to the need to ensure the functioning of the EU institutions and taking into account the reasons for and duration of a possible extension”.