Brexit: MPs back Boris Johnson's plan to leave EU on 31 January
They voted 358 to 234 - a majority of 124 - in favour of the EU (Withdrawal Agreement) Bill, which now goes on to further scrutiny in Parliament.
The bill would also ban an extension of the transition period - during which the UK is out of the EU but follows many of its rules - past 2020.
The PM said the country was now "one step closer to getting Brexit done".
Labour leader Jeremy Corbyn told his MPs to vote against the bill, saying there was "a better and fairer way" to leave the EU - but six of them backed the government.
Mr Johnson insists a trade deal with the EU can be in place by the end of the transition period, but critics say this timescale is unrealistic.
The bill had been expected to pass easily after the Conservatives won an 80-seat majority at last week's general election.
MPs also backed the timetable for further debate on the bill over three days when they return after the Christmas recess - on 7, 8 and 9 January.
The government says it will get the bill into law in time for the 31 January Brexit deadline.
The legislation, which would implement the Brexit agreement the prime minister reached with the EU in October, was introduced in Thursday's Queen's Speech, setting out the government's priorities for the next year.
By John Pienaar, deputy political editor
"Getting Brexit done" turned out to be a useful slogan, and no doubt it helped Boris Johnson win the election.
But almost nothing in politics is truly simple - least of all Brexit.
Today he passed an historic milestone - but the destination is still some way off.
Ruling out any extension to the Brexit transition period might mean Britain leaves with no deal - equally some in government believe it's possible we could see a kind of phased trade deal with the EU, thrashed out over the months and maybe years ahead.
There are changes to the previous bill, which was backed by the Commons in October, but withdrawn by the government after MPs rejected a three-day deadline for getting it through Parliament.
The changes include:
- Legally prohibiting the government from extending the transition period - during which a trade deal between the UK and EU will be discussed - beyond 31 December 2020
- Allowing more UK courts to reconsider European Court of Justice rulings that have been retained in UK law after Brexit
- Requiring ministers to report annually to Parliament on disputes with the EU under the prime minister's withdrawal agreement
- Repealing spent legislation that "now serves no purpose"
The bill also loses a previous clause on strengthening workers' rights.
The government now says it will deal with this issue in a separate piece of legislation, but the TUC has warned that the change will help "drive down" working conditions.
Beginning the debate in the Commons, the prime minister said his bill "learns the emphatic lesson of the last Parliament" and "rejects any further delay".
"It ensures we depart on 31 January. At that point Brexit will be done. It will be over," he told MPs.
Labour leader Mr Corbyn said the government's "mishandling of Brexit" had "paralysed the political system," divided communities and was a "national embarrassment".
He said MPs "have to respect the decision" of the EU referendum in 2016 "and move on".
"However, that doesn't mean that we as a party should abandon our basic principles," he said.
"Labour will not support this bill, as we remain certain there is a better and fairer way for this country to leave the EU."
The SNP's Westminster leader, Ian Blackford, said: "Scotland still totally and utterly rejects Brexit, yet the prime minister is blindly hurtling towards the cliff edge with these Brexit plans that will leave us poorer, leave us worse off."
On the change in the bill that would legally prohibit the government from extending the transition period beyond 31 December 2020, Mr Blackford said: "By placing that deadline, that risk of a no-deal Brexit, that we all fear is very much, is on the table again."
And the Democratic Unionist Party's Sir Jeffrey Donaldson said there was a "major contradiction" in the prime minister's deal "that causes us great concern".
He said, while it mentioned "unfettered access" for Northern Ireland when it comes to trade in the UK, it also had customs arrangements "that inhibit our ability to have that unfettered access".
In the 2016 referendum, the UK voted by 52% to 48% to leave the EU. But the subsequent difficulties in getting Brexit through Parliament have caused gridlock at Westminster.
An earlier withdrawal agreement - reached between previous PM Mrs May and the EU - was rejected three times by MPs.