Boris Johnson has faced a double defeat in the Commons after MPs turned down his motion for a general election.
Earlier, MPs backed a bill aimed at blocking a no-deal Brexit if the PM hadn't agreed a plan with the EU ahead of the 31 October deadline.
Mr Johnson said the bill "scuppered" negotiations and the only way forward now was an election.
But Labour leader Jeremy Corbyn accused the PM of "playing a disingenuous game" to force a no-deal Brexit.
He said his party would back an election after the bill had been passed, but not before.
Both the SNP and the Liberal Democrats also criticised the prime minister's motion as a plot to make sure the UK left the EU without a deal.
But supporters of Mr Johnson hit back at opposition members who had been calling for a general election for two years.
Mr Johnson wanted MPs to agree to an early general election on 15 October, saying the bill - which forces him to ask for an extension to the Brexit deadline if no deal had been agreed - left him unable to negotiate a deal.
He needed two thirds of all MPs to vote in favour under the Fixed Term Parliaments Act, but the result only saw 298 vote for the motion and 56 against - 136 short of the number he needed.
The bill to block no deal passed all its stages in the Commons in one day, with the support of most opposition parties and 21 Tory rebels, as they tried to push it through ahead of Parliament being suspended next week.
It will now go to the Lords for approval.
Peers are debating a business motion on how to move forward with the bill - but pro-Brexit peers have laid down over 100 amendments to derail its progress.