Labour and the Conservatives have both lost control of key councils in local elections across England.
Labour failed to take several targets from the Tories, including Wandsworth in London, but won back Plymouth and became the largest party in Trafford.
The Tories won Barnet and gained from a collapse in UKIP’s vote, celebrating wins in Basildon and Peterborough.
The Lib Dems regained control of Richmond, in London, from the Tories and gained seats elsewhere.
A total of 4,371 seats are up for grabs in 150 local councils in what is the first England-wide test of political opinion since last year’s general election.
With two thirds of the results in so far, Labour have held on to 50 councils as well as taking control of Plymouth from the Conservatives – a result Tory MP Johnny Mercer blamed on the government’s handling of defence issues.
But Labour lost control of Nuneaton and Bedworth in Warwickshire, after the Conservatives took eight of their seats, and Derby – where its council leader lost his seat to UKIP.
The Conservatives have also won control of Barnet Council in north London, taking it back from no overall control, which a defeated Labour councillor appeared to link to the ongoing anti-Semitism row in his party.
Labour did pick up a number of seats in the Tory stronghold of Kensington and Chelsea Council, but the Conservatives retained control, despite criticism of their handling of the Grenfell Tower disaster.
The leader of Kensington and Chelsea council, Elizabeth Campbell, said: “I think we all recognise we still need to rebuild trust and to do that we need to earn trust. And we need to earn it day by day and by our actions, not just by our words.”
The Conservatives have won Basildon in Essex, which was previously under no overall control, benefiting from the implosion of the UKIP vote, and held on in Swindon, despite a well-resourced Labour campaign.
Polling expert Professor Sir John Curtice said the Tories were performing relatively well in areas with a substantial Leave vote in the 2016 referendum, where they are picking up votes from UKIP, which did not stand candidates in many areas, while Labour were performing better in places where the Remain vote was stronger and with a higher proportion of younger voters.
BBC assistant political editor Norman Smith said the question set to be raised after tonight was whether we had seen the “high watermark of Corbynism”.
He told BBC Radio 4’s Today programme: “There was a sense after the general election that this was a man on a charge, a man on the momentum, a man who had built up this massive party.
“Last night, that sort of Corbyn momentum seemed to stall and in some significant areas outside of London, seemed to go backwards.”
He said the Conservatives had “held their ground”, and “hugely benefitted” from the collapse of the UKIP vote, but after eight years in power, it went against the rule of thumb in local elections where the sitting government normally “get a kicking”.
“There is no sign of a major haemorrhage in Tory support,” he added.
Shadow Chancellor John McDonnell told the BBC Labour was looking for “incremental gains” to lay the foundations for the next general election rather than “big swings” in support. He criticised “some of the hype” during the campaign about Labour’s chances in London.
London Mayor Sadiq Khan, who said during the campaign there should be “no no-go areas” for Labour, said the party always had “a mountain to climb” to win places like Wandsworth and the party should be happy with boosting overall representation.
Conservative Party chairman Brandon Lewis acknowledged the losses, but told BBC Breakfast that voters had chosen the Tories after seeing “good, clear and strong leadership” from the prime minister, and they wanted to see the same on a local level.
He added: “It is a good night for us, but it is just stage one. We have got work to do as we go forward towards the next general election and as part of that work we will want to win back those councillors across the country.”
By BBC Political Editor Laura Kuenssberg
Before the full picture is clear, it looks as if Labour has moved on slightly since the general election.
But, in the words of Sir John Curtice, Jeremy Corbyn’s party has come out of this more or less “empty-handed”, and they can’t show the kind of progress they would be shouting about if they were truly convinced they were on a rapid march to Number 10.
The Tories have avoided the kind of wipe-out they feared and there will be huge relief in Conservative HQ this morning.
Ninety council results have been declared, with the remaining 51 being counted during the day on Friday with results expected between noon and 18:00 BST.
There was controversy earlier as some voters in Swindon, Woking and Bromley were reportedly prevented from voting after turning up without the required identity documents. The three areas were among five trialling voter ID in an initiative attacked by Labour. Turnout was up in Swindon, suggesting the ID pilot did not affect the vote there.
Labour has been defending the highest number of seats – more than 2,200 – and throughout the campaign were talking up their prospects in London, where they made gains in last year’s general election.
However, the party’s hopes of seizing control of Wandsworth and Westminster, held by the Tories for decades, proved unfounded while the party lost ground in Hillingdon.
Energy minister Claire Perry said the Conservatives, who are defending about 1,350 seats, had been preparing to “batten down the hatches” after eight years in government but were not “taking the hit” they might have feared while International Trade Secretary Liam Fox said the results were at the “higher end” of expectations.
The Lib Dems are confident of winning back control of Kingston-upon-Thames, lost to the Tories four years ago, after taking neighbouring Richmond – which had a large majority in favour of the remaining in the EU.
The party also withstood a strong Conservative challenge to hold onto Sutton in south-west London – while it picked up nine seats in Kingston-upon-Hull.
Lib Dem culture spokeswoman Christine Jardine said the party had clearly “turned a corner” after the troubles of recent years and “people are coming back to us”.
It was also a positive night for the Greens, which took two seats off Labour in Sheffield, where the Labour-run council has been engulfed in a row over the felling of thousands of trees. The party, which is defending 31 seats, also added two new councillors in Trafford and one in Worcester.
It has been a different story for UKIP which has haemorrhaged support, losing nearly all of the council seats it won in 2014, when it broke through into local government for the first time.
The Eurosceptic party, which put up candidates in only 540 seats compared with 2,193 in 2014, lost all ten seats it contested in Basildon, five in Thurrock and seven in Dudley.
Former deputy chair Suzanne Evans hailed its success in winning three seats in Derby as a sign it could still “put the cat among the pigeons”, adding: “If UKIP does crumble I think you could still arguably make the case that it’s been one of the most successful political parties in history.”
In addition to the council polls, mayors are being elected in Watford, Hackney, Newham, Lewisham and Tower Hamlets while the first-ever mayor for the Sheffield City Region will also be chosen.
There are no local elections in Scotland, Wales and Northern Ireland. However, a parliamentary by-election for the Westminster seat of West Tyrone took place, with Sinn Fein retaining it.