Voters will go to the polls on 12 December, with parliament being dissolved at a minute past midnight on 6 November.
MPs voted by 438 to 20 to back legislation calling an early election on the government’s preferred date, after a Labour amendment setting 9 December as polling day was defeated.
After moving first to call for an election, the SNP and Liberal Democrats abstained. The SNP MP Angus MacNeil rebelled to oppose the election motion.
Putting forward the legislation at the start of debate yesterday afternoon, Boris Johnson accused MPs of trying to delay Brexit "forever".
The Prime Minister said a "new and revitalised" Parliament was needed to take Britain out of the European Union as he introduced legislation for a poll on December 12.
Mr Johnson took aim at Labour leader Jeremy Corbyn's previous opposition to an election, and claimed Labour was not interested in delivering Brexit.
"All they want to do is procrastinate," he told the Commons.
"They don't want to deliver Brexit on October 31, on November 31, even on January 31."
He added: "They just want to spin it out forever, until the 12th of never. And when the 12th of never eventually comes around, they'll devise one of their complicated parliamentary procedures and move a motion for a further delay and a further extension then."
Mr Corbyn said his party “backs a general election because we want this country to be rid of this reckless and destructive Conservative Government."
The Labour leader continued: "It is time for real change. And I've said consistently when no-deal is off the table we will back an election.
"Today, after much denial and much bluster by the Prime Minister, that deal is officially off the table.
"So this country can vote for the Government that it deserves."