Lawmakers backed an amendment which effectively forces Johnson to ask Brussels for an extension until January next year, while they scrutinised the proposed domestic legislation to enforce the deal.
Johnson was defiant in responding to the result, despite conceding that the so-called “meaningful vote” on his divorce agreement with Brussels “has been voided of meaning”.
But he added: “The best thing for the UK and for the whole of Europe is for us to leave with this new deal on October 31.”
“I will not negotiate a delay with the EU, and neither does the law compel me to do so,” he said.
Johnson earlier argued that further delay — more than three years after the landmark 2016 referendum to leave the bloc — would be “pointless, expensive and deeply corrosive”.
MPs could still meet the October 31 deadline when the government introduces its formal withdrawal agreement bill in parliament next week.
In opting to back a delay, they are seeking to ensure they do not run out of time debating it and deliver by accident the no-deal Brexit they oppose.
Separate legislation passed last month requires Johnson to write to the EU requesting an extension if a deal has not been passed by October 19.
Johnson has said he would rather be “dead in a ditch” than ask for more time, but has also promised to obey the law.