The Liberal Democrats were the bookies' favourites and many Conservatives had already written off their chances of holding North Shropshire before the votes were cast on Thursday. But that did little to blunt the impact of such a clear defeat in a constituency that has voted Tory since the Great Reform Act of 1832 and where the party won a majority of almost 23,000 two years ago.
Blame lies squarely with Boris Johnson, who triggered the byelection with his botched attempt to save outgoing MP Owen Paterson from a brief suspension from parliament over sleaze. Canvassers for every party reported that the prime minister's conduct came up constantly on the doorsteps as voters complained that he was not taking his job seriously.
Some were concerned about reports of lockdown-breaking parties in Downing Street last year but others zeroed in on Johnson’s rambling speech to business leaders last month when he drifted into a riff on Peppa Pig. That speech has also come up in focus groups in recent weeks as voters who once enjoyed the prime minister’s jovial indifference to convention and duty suggested it was time for him to smarten up his act.
The Conservatives lost North Shropshire on a 34 per cent swing to the Liberal Democrats, who came third in 2019 but benefitted on Thursday from tactical voting by Labour supporters. Unlike Chesham and Amersham, which the Liberal Democrats took from the Conservatives in June, North Shropshire is a rural constituency that voted Leave in 2016 by a margin of almost 20 points.
The defeat comes as Johnson has lost the support of the libertarian, Eurosceptic wing of the Conservative parliamentary party, which helped to deliver him the party leadership. These MPs were at the heart of Tuesday's 100-strong backbench rebellion over new coronavirus restrictions and they are gearing up for more trouble if the government tries to introduce further measures as the Omicron variant sweeps through the country.
Johnson's awkward path between medical advice and his MPs' prejudices will be complicated if he again needs Labour votes to introduce tougher restrictions. Keir Starmer and shadow health secretary Wes Streeting have been calling for more support for businesses and higher sick pay for workers affected by the measures and these demands could be the price of their support.
Johnson’s leadership may not be under immediate threat, partly because the bar of 54 letters from MPs to trigger a confidence vote is high but also because none of the leading contenders want to take on the job in the current circumstances. Many MPs are content to give the prime minister a chance to improve his Downing Street operation and to pay more attention to their concerns.
But if next May’s local elections are a disaster, the Conservative MPs who chose Johnson because he was an election winner may conclude that he has lost his magic and a summer leadership contest could be on the cards.