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.
Labour sources told the BBC the party abstained on the vote, although three MPs appeared to have voted for it and 28 against.
The SNP also abstained.
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.
Speaking after the vote, the PM attacked Mr Corbyn, claiming he was “the first leader of the opposition in the democratic history of our country to refuse the invitation to an election”.
He said he “urged [Mr Corbyn’s] colleagues to reflect on the unsustainability of this position overnight and in the course of the next few days.”
‘Accept your duty’
Earlier, the Labour leader said Mr Johnson’s offer of an election was “a bit like an offer of an apple to Snow White from the Wicked Queen… offering the poison of a no deal”.
He added: “Let this bill [to block a no deal] pass and gain Royal Assent, then we will back an election so we do not crash out.”
One senior MP told the BBC’s political editor Laura Kuenssberg that Mr Corbyn had said he would not allow Mr Johnson to have an election before 31 October.
The leader of the SNP in Westminster, Ian Blackford, said the debate about an early election was only going ahead because the PM had lost the vote against the bill.
He added: “[Mr Johnson] must accept the will of this House, accept the bill that Parliament has passed, accept your duty as prime minister and go to the European Council on 17 October and negotiate the extension you have been instructed to deliver.”
Leader of the Liberal Democrats, Jo Swinson, praised the cross-party work on the bill as “putting the national interest first”, but condemned Mr Johnson’s reaction.
“I am intrigued that as a result of this vote… the prime minister’s response is this somehow messes up his plan,” she added.
“If he is seriously saying the extent of his plan was to try to bully the EU and only get a good deal by threatening [to] leave without a deal… it is not very well thought through.”
But Tory MP Nigel Evans criticised the opposition, telling the Commons: “They have been given an opportunity [for an election] and they are running scared – not just from the prime minister, not just from a general election, but from the people of this country who in 2016 said they wanted to leave the EU.”
Earlier, shadow Brexit secretary Sir Keir Starmer told Labour MPs the leadership would not back an election until a Brexit delay had been agreed with the EU – making the 15 October proposal impossible.
But the First Minister of Scotland and leader of the SNP, Nicola Sturgeon, tweeted that the opposition parties must “seek to force [an] election” after the bill becomes law but before Parliament is suspended.
She added: “It’s starting to feel like Labour doesn’t want an election at all and leaving this PM in place knowing he’ll try every trick in book to get what he wants would be irresponsible.”
What does the no-deal bill say?
The bill says the prime minister will have until 19 October to either pass a deal in Parliament or get MPs to approve a no-deal Brexit.
Once this deadline has passed, he will have to request an extension to the UK’s departure date to 31 January 2020 – and, unusually, the bill actually includes the wording of the letter he would have to write.
If the EU responds by proposing a different date, the PM will have two days to accept that proposal. During that time, MPs – not the government – will have the opportunity to reject the EU’s date.
The bill also requires ministers to report to the House of Commons over the next few months. potentially providing more opportunities to take control of the timetable.
Be aware though, this could all change over the next few days because MPs and peers have the power to pass amendments to any law.
Meanwhile, the fallout from No 10’s decision to withdraw the party whip from 21 Tory rebels who backed the bill to block no deal has continued to face criticism from others in the party.
A group of around 80 Conservatives have written to the prime minister, calling on him to re-instate the whip to the “principled, hard-working and dedicated” MPs.
In a statement on behalf of the “One Nation Caucus”, former minister and Tory MP Damian Green said: “Removing the whip from valued colleagues who have served their country and party with distinction damages our hope of winning the next general election.”