Zac Goldsmith has been spectacularly unseated by the Lib Dems in a by-election sparked by him resigning over the Heathrow Airport expansion.

The former Tory MP - who stood as an independent for the Richmond Park seat in west London - was bulldozed out of the Commons by Sarah Olney, who won with 20,510 of the votes compared to Goldsmith's 18,638.

In her victory speech, Ms Olney said it had "sent a shockwave through this Conservative Brexit government".

She added: "Our message is clear: we do not want a hard Brexit.

"We do not want to be pulled out of the single market, and we will not let intolerance, division and fear win."

The voter turnout in the constituency, which overwhelmingly voted to remain in the EU referendum, was 53.6% - the highest in a UK mainland by-election since the Conservatives won Crewe and Nantwich from Labour in 2008.

Ms Olney said the result was a rejection of the "politics of anger and division", and dissatisfaction with the way Brexit was being handled.

Speaking briefly afterwards, a clearly downcast Mr Goldsmith said: "This by-election that we have just had was not a political calculation, it was a promise that I made and it was a promise that I kept."

The Tories offered commiserations to Mr Goldsmith on the result.

A spokesman said: "Zac has been a strong and principled champion for the residents of Richmond Park and North Kingston over the past six years as their Member of Parliament, and a popular figure in the Conservative Party.

"This result doesn't change anything. The Government remains committed to leaving the European Union and triggering Article 50 by the end of March next year."