The Conservatives have lost the North Shropshire by-election, a shock result that will put more pressure on Boris Johnson after a difficult few weeks for the prime minister.
Lib Dem candidate Helen Morgan triumphed in the contest sparked by the resignation of Owen Paterson amid a lobbying scandal.
She polled 17,957 votes, ahead of Tory candidate Neil Shastri-Hurst on 12,032.
Labour’s Ben Wood was third with 3,686 votes.
By-election news live: The latest reaction on the Lib Dem’s shock win in North Shropshire
Mrs Morgan – in her victory speech – said: “Tonight, the people of North Shropshire have spoken on behalf of the British people.
“They have said loudly and clearly, ‘Boris Johnson, the party is over’.
COVID-19: Boris Johnson faces fresh claims of Downing St party held during May 2020 lockdown
Boris Johnson’s second child with wife Carrie named Romy Iris Charlotte Johnson
COVID-19: ‘We’re not locking down’ – Boris Johnson denies ‘stealth’ shutdown but urges caution when socialising
“Your Government, run on lies and bluster, will be held accountable. It will be scrutinised, it will be challenged and it can and will be defeated.
“Across the country the Liberal Democrats are taking on the Conservatives and winning.”
Liberal Democrat leader Sir Ed Davey said: “This result is a watershed moment in our politics and offers hope to people around the country that a brighter future is possible.
“Millions of people are fed up with Boris Johnson and his failure to provide leadership throughout the pandemic and last night the voters of North Shropshire spoke for all of them.”
Rejected Tory candidate Mr Shastri-Hurst described the result in North Shropshire as “disappointing”.
Leaving the election count in defeat, Mr Shastri-Hurst was asked if the Prime Minister was to blame for the result.
He told reporters: “We’ve run a positive campaign here, I’m extremely proud of the work that everybody’s done. Of course it’s a disappointing result for us.”
Asked if the party needs to change, he said: “We’re 11 years into a Conservative Government, by-elections are never an easy thing to do.”
The result marks another remarkable by-election success for the Lib Dems, after the party overturned a healthy Tory majority in Chesham and Amersham back in June.
The turnout has been confirmed as 46.3%, significantly lower than the 2019 general election turnout in the constituency of 62.9%.
Mr Paterson won the seat for the Conservatives, which has been blue since its creation in the 1980s, with a majority of almost 23,000.
When you beat the Conservatives in a by-election, for the second time in one year.#NorthShropshire #NorthShropshireByElection pic.twitter.com/nrCSmBUnTu
But the former cabinet minister quit in November after being found to have broken lobbying rules with his £110,000-a-year private sector consultancy work.
He was facing the prospect of a 30-day Commons suspension for the breach, but the PM instructed Tory MPs to vote in favour of a motion ignoring this.
However, the move sparked a furious backlash and the government was forced into a swift U-turn, with Mr Paterson quitting shortly afterwards.
It marked the start of a tumultuous period for Mr Johnson that culminated this week with 100 of his own MPs rebelling over COVID passes, by far the biggest mutiny of his premiership.
There have also been allegations of rule-breaking over numerous Christmas gatherings last year at a time of heightened COVID restrictions, further scrutiny of the refurbishment of the PM’s Downing Street flat and questions about his leadership more generally amid Labour taking the lead in a number of opinion polls.
The North Shropshire result is another headache for Mr Johnson and comes as his government battles the Omicron variant of COVID-19 and weighs whether to impose further restrictions amid its continuing spread.