Fears of a difficult set of results for the Tories proved unfounded, as they managed to hold on to a number of London councils and make gains in Brexit-supporting areas of the North and Midlands, suffering a net loss of 30 seats.
There were bright spots for Labour – including its best performance in London since 1971 and victories in Kirklees and Plymouth – but the party failed to match pre-poll expectations of widespread gains.
The Liberal Democrats saw an uptick in fortunes, gaining control of four councils and performing well in Remain-backing areas.
UKIP, meanwhile, experienced an electoral bloodbath, losing more than 120 councillors. The performance prompted its own general secretary to compare the party to the Black Death.
If the results were replicated at the next election, it would mean a hung parliament.
According a projection by Sky’s elections analyst Michael Thrasher, the Conservatives would have 296 seats, Labour 270, the SNP 35, the Lib Dems 26 and other parties 23.
Mrs May visited Wandsworth to congratulate local Tories for holding off the challenge of Labour in the London borough.
She told cheering activists that the opposition “threw everything” at “one of their top targets” but failed, adding: “We’ve seen other success in London. We’ve held Hillingdon, Barnet, Westminster.
“And outside of London, we’ve made progress in places like Dudley and Walsall. We’ve taken control in Basildon and Peterborough.
“And that’s all the result of the really hard work of our councillors, our activists, our supporters and our revitalised campaign machine.
“But we won’t take anything for granted. We will continue to work hard for local people and we will build on this success for the future.”
In the wake of rows over the Windrush generation and Brexit, with the former precipitating the resignation of Amber Rudd as home secretary, the PM will take some encouragement from her party’s performance.
The Tories gained Peterborough, Southend and Basildon, the latter a result of capitalising on UKIP’s demise.
In London, the Conservatives successfully defended Wandsworth and Westminster despite Labour hopes they could take both.
Kensington and Chelsea stayed blue, despite anger over the Grenfell Tower fire.
London Mayor Sadiq Khan had said before the vote: “There is now no corner of London where Labour can’t win – and with enough hard work we can challenge the Tories even in their crown jewels of Wandsworth and Barnet.”
Meanwhile, Dudley remained in no overall control, but the council’s Tory leader was confident a UKIP councillor and independent Conservative would join their group to hand them effective control.
However, the loss of a number of councils to the Lib Dems in pro-EU areas will cause concern among the party’s Remain wing.
The Tories also lost Trafford, their flagship council in the North West, to no overall control, with Labour now the largest party.
Labour’s performance – which saw the party pick up almost 60 seats but only gain control of one city council – has sparked suggestions we have reached “peak Corbyn”.
This was dismissed by the Labour leader, who told Sky News: “There is much more to come and it’s going to get even better.”
He added: “We were defending seats that were last won in 2014, which was a particularly good year for Labour in local government.
“Obviously, I am disappointed at any places where we lost a bit of ground, but if you look at the overall picture, Labour gained a lot of seats across the whole country, we gained a lot of votes in places we never had those votes before.”
Mr Corbyn said the party was “ready for a general election whenever it comes”.
Labour figures described their performance as “solid” and said the party had consolidated gains made in last year’s general election.
Many within the party also pointed out that by its calculations, close results in four wards meant they missed out on victory in Wandsworth by just 141 votes.
But a number of disappointing results will give critics of the Labour leader fresh ammunition.
In the Midlands, the party lost control of Derby and Nuneaton and Bedworth and failed to take the target council of Walsall.
Jess Phillips, Labour MP for Birmingham Yardley, said the party in the Midlands and North had “some big questions to ask ourselves”.
Streatham MP Chuka Umunna told Sky News that Labour should have been making “much more progress” given the Government’s recent troubles – and called for a party inquiry into its performance.
There had been fears Labour’s anti-Semitism row would affect the party’s performance in areas with a high Jewish population.
The party failed to win control of the north London borough of Barnet, which, according to the 2011 census, is home to 20% of the Jewish population of England and Wales.
Defeated councillor Adam Langleben said Labour had been “punished” by voters over what he characterised as the national party’s refusal to confront the issue.
Mr Langleben claimed Mr Corbyn did not even understand the problem and called on him to visit the borough and apologise.
Deputy leader Tom Watson admitted the Jewish community had “sent us a message” and said Labour had lessons to learn.
There was plenty to cheer for the Lib Dems, who gained Kingston, Richmond and South Cambridgeshire from the Tories amid signs of a Brexit backlash in some areas.
The party, which saw a net gain of more than 70 councillors, also secured the Hertfordshire council of Three Rivers from no overall control.
More from Conservatives
Labour and Tories both lumbering like zombies after local elections
Cigarettes and tears as Labour count cost of anti-Semitism row
Conservatives hold Kensington and Chelsea despite Grenfell anger
Local elections: Anti-Semitism row mars Labour’s urban gains
Tory deputy chair James Cleverly denies party has Islamophobia problem
All you need to know about the local elections
Leader Sir Vince Cable said the results were “very positive” and demonstrated the Lib Dems were “very much on the way back”.
:: Sophy Ridge will return with Ridge on Sunday this weekend from 10am. Joining Sophy will be former Cabinet minister Justine Greening, Conservative Party chairman Brandon Lewis and Labour Party chairman Ian Lavery.