British prime minister Rishi Sunak's governing Conservatives lost two strategically important parliamentary seats on Friday but unexpectedly retained Boris Johnson's old constituency in a setback for the opposition Labour Party.
The Conservatives' narrow victory in Johnson's seat gave Sunak some breathing space to try to narrow Labour's large lead in the polls by aiming to reduce high inflation and ease a cost-of-living crisis before a national election expected next year.
Sunak was quick to hail the win as proof the national election was not a "done deal". In a cafe in the constituency, he told reporters: "The message I take away is that we have to double down, stick to our plan and deliver for people."
But the scale of the challenge was highlighted by the loss of the once safe Conservative parliamentary seat of Selby and Ainsty in northeast England, where Labour overturned the biggest Conservative majority at a by-election since World War Two.
Labour leader Keir Starmer said that victory showed "just how powerful the demand for change is".
The Conservatives also suffered a crushing loss in another vote but the retention of the seat of Uxbridge and South Ruislip just outside central London by fewer than 500 votes ensured Sunak avoided becoming the first British leader to lose three by-elections on a single day in more than half a century.
Conservative former minister David Jones told Reuters his party now needed to push economic policies to rebuild support in traditionally strong areas. "With up to 18 months until the election, there is time to do it," he said.
Sunak, a former finance minister and investment banker, has tried to use his technocratic leadership to restore the Conservatives' credibility after a series of scandals last year forced Johnson to resign as prime minister, and economic turmoil prompted his successor, Liz Truss, to quit after just six weeks.
He is expected to reshuffle his senior ministers soon to pick his team to fight the next election.
With stubbornly high inflation, economic stagnation, rising mortgage rates, industrial unrest and long waiting times to use the state-run health service, the Conservatives had been braced for the possibility of losing all three seats.
In national opinion polls, Sunak's Conservatives are trailing Labour by about 20 points, which suggests the governing party will find it difficult to win a fifth consecutive national election.
But Labour's loss in Uxbridge shows it could struggle to secure a clear parliamentary majority.
John Curtice, Britain's best-known pollster, said the Uxbridge result suggested the most likely outcome of a national vote was a hung parliament and Starmer might see more debate within the party about his "safety first, ming vase strategy".
Starmer has been criticised by some in his party for sticking to a disciplined stance on public finances, refusing to make any uncosted offerings and sometimes dropping policies he believes a Labour government could not afford.
"The tide is still a long way out for the Conservatives and they still have an awful long way to go before they look as though they might have a chance of being able to retain power after the next general election," Curtice told the BBC.
The Uxbridge by-election was called after Johnson's shock decision to quit parliament last month after he was found to have made misleading statements over parties held in Downing Street during the coronavirus pandemic. Johnson denied misleading parliament.
The winning Conservative candidate, Steve Tuckwell, said his party's victory was because of local rather national factors, pointing to the issue of London’s Labour mayor extending the ultra-low emission zone to include suburban areas such as Uxbridge meaning some voters had to pay more for their cars.
One Conservative lawmaker said the opposition to ULEZ was a winner for the party and could help its candidate in the London mayoral election in May.
The other results exposed the Conservatives' vulnerabilities on two fronts: the loss of the rural Selby seat in the north of England, and one in the southwest, a traditional stronghold.
The Conservatives had won large majorities in both in the 2019 general election.
Labour won Selby and Ainsty in Yorkshire by 4,000 votes with the Conservatives unable to defend a majority of 20,137 with lawmakers saying Conservative supporters stayed at home. The seat was vacated after an ally of Johnson resigned in solidarity with the former prime minister.
In Somerton and Frome in southwest England, the centrist Liberal Democrats managed to overturn a Conservative majority of 19,213 after a third member of parliament quit, in that case over allegations of sexual harassment and cocaine use.
Curtice said Labour's loss in Uxbridge shows the "potential fragility" of the party's lead in the polls while the Conservatives continue to lose voters in southern areas.
He said the two main "political party leaders have been left with something to think about in the wake of these results".