The Conservative Party decided to delay the polling day until 4 May, so that it would come simultaneously with local elections. They selected Tim Palmer, a farmer and Dorset County Councillor, to defend the seat. The Liberal Democrats considered this byelection their best chance of gaining a seat since 1997 and selected a local pharmacistSandra Gidley (who had been Mayor of Romsey) as their candidate.
Labour carried out minimal campaigning in a constituency in which they had come third for years. This led many observers to assume that the party was expecting, or hoping, that its vote would largely go to the Liberal Democrats in order to help defeat the Conservatives. In the event, the Labour vote collapsed while the Liberal Democrats surged, and they made this the only mainland by-election to result in a change of party control in the entire Parliament. This was the first time the Conservatives had lost a seat in a by-election while in Opposition since the 1965 Roxburgh, Selkirk and Peebles by-election, and would be the last time the Liberal Democrats gained a constituency from the Conservatives at a by-election until the 2016 Richmond Park by-election.