The Tories have held on to Boris Johnson’s former seat in a blow to Labour leader Sir Keir Starmer.
Labour had hoped to take Uxbridge and South Ruislip, which the former prime minister held with a majority of 7,210 in 2019, but Tory Steve Tuckwell managed to retain it for Rishi Sunak’s party.
The Conservative victory means that Mr Sunak has been spared the prospect of being the first prime minister since 1968 to lose three by-elections on the same day.
But the Prime Minister still faces the possibility of the Liberal Democrats overturning a 19,213 Tory majority in Somerton and Frome – Sir Ed Davey’s party believe they have “romped home”.
And in Selby and Ainsty, Labour hope to take a seat where the Conservatives were defending a 20,137 majority.
London mayor Sadiq Khan’s policy of expanding the Ulez low emission zone to outer boroughs – including Uxbridge and South Ruislip – has been blamed for the party’s failure to take the seat.
Labour candidate Danny Beales had distanced himself from the policy, saying it was “not the right time” to expand the £12.50 daily charge for cars which fail to meet emissions standards.
The failure to overturn the Tory majority in the seat was dubbed “Uloss” by a party insider in a sign of the unease at Mr Khan’s plan.
In public, senior Labour figures acknowledged Ulez had been a factor in the vote.
Shadow justice secretary Steve Reed told the PA news agency: “I think there’s been a number of issues at play, but there has certainly been a number of voters who have said to us that they are very concerned about Ulez.
“Everyone wants to see clean air. But for some people, I think, given the chaos that there is in the economy, because the Conservatives have crashed it and the cost-of-living crisis that they fuelled, that this is the wrong time to introduce a charge for Ulez.”
In his victory speech, new MP Mr Tuckwell said Mr Khan had cost Labour the seat.
“It was his damaging and costly Ulez policy that lost them this election,” he said.
“This wasn’t the campaign Labour expected and Keir Starmer and his mayor Sadiq Khan need to sit up and listen to the Uxbridge and South Ruislip residents.”