The House of Commons has defeated Boris Johnson's government again as opposition MPs bid to pass legislation that would prevent a no-deal Brexit.

The Bill to further delay Brexit by months unless Parliament either endorses a deal or no-deal by October passed its second reading by 329 to 300.

It marks the second Commons defeat for the new Prime Minister in as many days in a brutal last 24 hours for the government.

The legislation now moves to committee stage, with further votes, including on potential amendments, later on Wednesday evening.

In a tumultuous evening ahead at Westminster, MPs will then face a vote on whether to back the PM's call for an early general election.

Johnson faced a rebellion of 21 Tory MPs in a vote on Tuesday night on whether MPs should seize control of Commons business.

After opposition and rebel MPs won by 327 votes to 301, they took over the parliamentary agenda on Wednesday afternoon to begin their attempt to quickly pass their bill.

The Conservative rebels were threatened with having the whip withdrawn and being deselected as candidates in any future election in a threat to try to stop them voting against the government.

Number 10 followed through on its threat, expelling from the party senior MPs including former Chancellor Philip Hammond, recent ex-ministers Rory Stewart and David Gauke and Father of the House Ken Clarke.

But the first vote on the bill on Wednesday afternoon saw the rebels swell their ranks even further, with Caroline Spelman joining them to make 22.

Johnson has said the legislation, if passed, would tie his hands in his stated aim to strike a new Brexit deal with Brussels and delay Brexit further.

He has repeatedly committed to leaving the EU with or without a deal on October 31, and says he is seeking a snap election in mid-October to break the Commons impasse.

Critics fear that if opposition MPs agreed to Johnson's election timetable, he would subsequently move the date to beyond October 31 in order to force a no-deal Brexit through.

Downing Street has rejected suggestions Boris Johnson will resign to trigger a general election in a bid to block efforts to delay Brexit.

Labour's Keir Starmer has indicated Labour MPs will not vote for a general election until the legislation to stop no-deal has not only been passed, but also implemented.

However, First Minister Nicola Sturgeon has called for an election to be called after the bill has passed but before Parliament is suspended, or prorogued, next week.

Under the Fixed-Term Parliament Act, the government requires a two-thirds majority of MPs to force an early election.