The coalition partners were hammered at the polls last night, with the Tories falling to fifth place in Rotherham, and the Liberal Democrats coming eighth.
The disastrous results provided further evidence of disillusionment with the coalition but they also came amid an impressive showing for Ukip and a squeeze on mainstream parties from the BNP on the right and Respect on the left.
Labour won all three by-elections in Croydon North, Middlesbrough and Rotherham, which were triggered by the deaths of two MPs and the suspension of Dennis MacShane following a row over expenses.
Ukip finished third behind the Tories in Croydon North but it came second in Middlesbrough and Rotherham.
The latter seat was the scene of a national debate after the local council removed children from their foster parents because of their membership of the eurosceptic party. But reports from the ground suggested unemployment and immigration at the front of Ukip voters' minds when they handed the party 4,648 votes.
Labour topped the poll with 9,866 votes. The BNP and Respect pushed the Tories into fifth place and the Lib Dems lost their deposit and came in eighth.
Ed Miliband will be pleased with Labour's performance. It increased its share of the vote in Croydon North and Middlesbrough to over 60%.
But Ukip was the story of the night, with party leader Nigel Farage stressing the sense of momentum the party is enjoying.
"Our previous best-ever by-election result, a fortnight ago, was 14.3% and this one is comfortably over 20%. Whichever way you look at it, UKIP is on the rise," he said.
Respect had hoped to repeat George Galloway's shock win in Bradford West last April, when he overturned a 5,000 Labour majority predominantly through appeals to Asian women.
Lee Jasper, who used to work with Ken Livingstone in City Hall, was unable to replicate that success in Croydon North, where he won just 707 votes. Respect candidate Yvonne Ridley, a former Taliban prisoner, only drummed up 1,778 votes in Rotherham, coming in fourth place.