THERESA May today declared that Labour had "failed" after Jeremy Corbyn's party fell short in the local elections.
The PM visited Wandsworth in South-West London for a victory lap after the Tories successfully held on in several major battlegrounds.
And the Labour boss was forced to deny that Britain had passed "peak Corbyn" in the wake of the disappointing results.
Across the country Labour gained a few dozen extra councillors out of a total of 3,000, far behind what was expected, while the number of Tory councillors has fallen by just a handful.
Speaking in Wandsworth today, Mrs May said: "Labour thought they could take control - this was one of their top targets and they threw everything at it.
"But they failed, and the people of Wandsworth re-elected a Conservative council. That's the message of these local elections around the country - that Conservative councils deliver great local services at lower taxes."
The PM added: "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."
Earlier Mr Corbyn held a rally in Plymouth, where Labour won the council in one of its few major victories of the local elections.
He insisted that the "story of the night" was Ukip losing ground - and claimed there's "much more to come" from Labour despite their election flop.
But elections expert Sir John Curtice said: "The truth is there isn't really much for the Labour party to celebrate this morning."
On a night of mixed fortunes for both main parties:
- Labour lost out on the key London targets of Barnet, Kensington & Chelsea, Wandsworth and Westminster
- Tories made gains in smaller cities and towns including Derby, Basildon and Redditch
- Mr Corbyn's party beat the Conservatives in Plymouth and Trafford
- Labour MP Dan Jarvis became the first ever Mayor of the Sheffield city region
- The Tories gave Labour a scare in Birmingham but were unable to beat them
- The Lib Dems made gains in London and elsewhere
- Ukip were almost entirely wiped out across the country
Click here for full results of Local Elections 2018
A Labour shadow minister told The Sun last night: “Jeremy has not spent the 11 months since the General Election winning Middle England, and now never will.
"We’re not going to do as well as we should, and I suspect these results will show we are past peak Corbyn.”
Speaking in Plymouth, the Labour leader was asked if Britain has reached "peak Corbyn" and replied: "No, no, there's much more to come and it's going to get even better."
Asked why Labour had failed to make the predicted gains, Mr Corbyn said: "The story of the night is that Ukip have collapsed across the country, that we have gained in Plymouth.
"We have also put up our vote in a lot of other places and gained wards we've never held before in some of the London boroughs.
"We're ready for a General Election whenever it comes."
In a statement he added: "Labour achieved a solid set of results in the local elections.
"We have consolidated and built on the advances we made at last year’s General Election, when we won the largest increase in Labour’s share of the vote since 1945."
His deputy Tom Watson insisted the party was "quietly satisfied" by the result.
Labour's other big win overnight was in Trafford, held by the Tories since 2014, where Labour is now the largest party.
But the Conservatives held on to Labour target Swindon, and took control in Peterborough and Basildon - while Labour lost their majority in Derby and Nuneaton.
In Birmingham, a traditionally Labour-dominated city, the Tories did better than expected, prompting suggestions they could take control, but Labour ended up hanging on.
Labour made gains in London, adding to its vote across the capital - but in an embarrassing blow, they failed to take control in the key target councils of Wandsworth, Westminster and Hillingdon despite pouring resources into the seats.
Mr Corbyn's followers also lost out in the North London seat of Barnet, where the anti-Semitism scandal appears to have an impact.
Labour MP Jess Phillips took aim at her leader this morning, tweeting: " I see everyone is claiming failure as victory."
Labour bosses appeared to admit they had made a mistake by hyping up expectations of huge gains in London and elsewhere.
Campaigns chief Andrew Gwynne said the party was never likely to take the Tories' flagship London councils and admitted Labour had seen "disappointing results" in many parts of the country.
Conservative party chairman Brandon Lewis told Sky News: "It's clearly a good night for us, we've done better than expected.
"But it's just stage one of the work we want to do over the next few years leading to the next General Election."
Boris Johnson added: "No one is going to be complacent about these results, we are going to work very, very hard... [but] it has been an encouraging night."
With all but a handful of councils declared, Labour had gained 64 wards and the Lib Dems 61, with the Tories losing 20 - and Ukip almost totally wiped out.
Overall, Labour won many more seats than the Conservatives because this year's local elections mostly took place in urban areas where the left tends to be stronger.
The pro-EU Lib Dems took Kingston and Richmond-upon-Thames in South-West London from the Tories, as well as holding on to the other councils they controlled.
MP Christine Jardine told the BBC: "It's a good night for us - and it's a long time since we felt that."
Leader Vince Cable added: "We're very much on the way back."
In Plymouth, one of Labour's major bright spots, local Tory MP Johnny Mercer blamed the party's defeat on cuts to the military with defence being one of the area's major employers.
He said: "I've made very public my concerns around the handling of defence at the moment and what the vision is."
As well as council elections across England, there was one parliamentary by-election - Sinn Fein easily held on to the seat of West Tyrone, where the previous MP quit after mocking IRA victims.
Counts are continuing throughout today, with the final results not expected until this evening in some areas.
If today's results were replicated in a General Election, the Tories would lose a dozen seats with the Lib Dems making gains - meaning Theresa May would no longer have a majority even with the DUP's support.
More than 4,250 council seats were up for grabs in more than 150 areas.
It was the first electoral test for both Labour and the Tories since last year's general election where Mrs May lost her majority and Mr Corbyn won an extra 30 seats for Labour.
Both parties have experienced setbacks in recent weeks - with Mr Corbyn's Labour being blasted with an anti-Semitism scandal, and the Tories being hit with the Windrush saga, which claimed the scalp of Home Secretary Amber Rudd.
All parties were nervous ahead of today’s counts, having failed to see the shock 2017 election result coming when Theresa May threw away a massive poll lead and Mr Corbyn stormed to 40 per cent of the national vote.
One Tory grandee said last night: “After 2017, we’ve all learned not to trust our very best instincts”.
Local elections were held in all 32 London boroughs, 30 metropolitan districts, 17 unitary authorities and 67 district councils across England.
Five council mayors were also up for election in Hackney, Lewisham, Newham, Tower Hamlets and Watford, as well as a metro mayor election for the new Sheffield city region.
MOST READ IN POLITICS
Yesterday scores of voters faces trouble casting their ballots and were even turned away, as a controversial new voting system which required ID was trialled in parts of the country.
And Bradford Council apologised for demanding some voters present ID when they didn't need to.
Meanwhile, voters flocked to the polls to take adorable snaps of their pet pooches too, as the #DogsAtPollingStations trend took off for the fourth year running.
We pay for your stories! Do you have a story for The Sun Online news team? Email us at [email protected] or call 0207 782 4368. You can WhatsApp us on 07810 791 502. We pay for videos too. Click here to upload yours.