
The overnight election results will have come as a disappointment to Labour, a source of relief for the Conservatives, and as mildly encouraging for the Liberal Democrats, writes Prof John Curtice and colleagues on the BBC's local elections team.
It was a night in which big swings were rare on the ground - apart from a collapse in the UKIP vote.
That enabled all three main parties to register gains, but with none of them making a decisive advance.
Labour's sole council gain so far was in Plymouth. More disappointing for the party was a failure to gain a single council in London, failing in particular to gain control of the Tory totems of Wandsworth or Westminster. Meanwhile outside the capital the party lost control of both Derby and Nuneaton.
The Liberal Democrats managed to capture Richmond-upon-Thames from the Conservatives, where their party leader, Sir Vince Cable, is a local MP.
But the Conservatives had the consolation of winning control of both Basildon and Peterborough.
So, what does this tell us about how the parties have fared - and why?
Collapse of UKIP
Behind these gains and losses is a clear pattern of rises and falls in the levels of party support.
Most of the seats being contested were previously fought over in 2014, when Labour were narrowly ahead of the Conservatives in the opinion polls.
At that time, UKIP were riding the crest of a wave, while the Liberal Democrats were in the doldrums.
Thanks to a collapse in UKIP support almost everywhere, both the Conservatives and Labour are enjoying more support this year than they did four years ago.
Labour's vote has increased on average by six points in our collection of detailed voting figures, while the Conservative vote is up by five points.
But outside the capital it was the Conservatives' vote that increased the most - by eight points, compared with Labour's seven point rise.
For the Liberal Democrats, support has increased on average by three points, a modest improvement on the poor baseline that the party was trying to defend.
The absence of any substantial net swing between the two largest parties is broadly in line with what might have expected from the opinion polls, which put the Conservatives just a nose ahead.
Yet Labour had allowed expectations that the party would make big gains to grow, and especially that the party might perform spectacularly in London.
Instead Jeremy Corbyn has come away virtually empty handed, while the Conservatives have emerged virtually unscathed.
Areas of Leave and Remain
Not everywhere swung the same way.
As in last year's general election, the Conservatives fared better in places that voted for Leave than in those that voted for Remain.
The Conservative vote is up by 13 points where more than 60% backed Leave.
These are the areas where UKIP had performed best four years ago.
However, the Conservatives have dropped by one point in areas where less than 45% voted Leave.
Not least of the reasons for this divergence is that UKIP performed best in 2014 in Leave-voting areas.
The collapsed UKIP vote in such places seems to have swung disproportionately behind the Conservatives, much as it did in last year's general election.
This pattern helps explain why the Conservatives' performance is weaker in London, which voted by three to two in favour of Remain.
The Conservative vote is only up one point in the capital, while Labour's vote increased by four points.
Consequently the party has lost more than 60 seats in London, whereas it gained around 60 in other parts of the country.
Role of young voters
Also in evidence, as in last year's general election, is a tendency for the Conservatives to fall back most heavily in places with large numbers of young voters.
In wards where more than 35% of the population are aged 18 to 34, the Conservative vote fell by one point.
But it increased by eight points where fewer than 20% belong to this age group.
Conversely, the Conservatives performed better the more pensioners there were in the ward.
Its vote is up by as much as 10 points on average where more than 20% of the population are aged 65 or over.
As well as struggling in places with relatively large numbers of young adults, the Conservatives did less well where there were more graduates and people from an ethnic minority background.
All of these were groups that were disinclined to vote for Brexit.
Liberal Democrat support has increased on average by three points.
However, this represents no more than a modest improvement on the poor 2014 result that the party was trying to defend.
Despite being the only significant party in England that opposes Brexit, the Liberal Democrats did not perform noticeably better in Remain voting areas.
Rather, the party's best performances seem to have been reserved for where the party was already relatively strong locally.
Meanwhile, the Greens found themselves trying to withstand a receding tide, with an average drop of 2 points to 7% in those wards where the party put up candidates.
However, the party had the consolation of making a net gain of six seats.
And, for a small party, occasional electoral success can be an invaluable lifeline.
About this piece
This analysis was commissioned by the BBC from experts working for outside organisations.
John Curtice is Professor of Politics at Strathclyde University, and Research Fellow at NatCen Social Research and The UK in a Changing Europe.
He worked with Stephen Fisher, Associate Professor of Political Sociology, University of Oxford; Robert Ford, Professor of Politics, University of Manchester and Patrick English, a postdoctoral researcher at the University of Sheffield.
Edited by Duncan Walker