Dozens of Tory rebels, alongside Labour and the SNP, gave the Prime Minister a bloody nose as the issue again exposed the divisions in the Conservatives.
MPs voted by 307 votes to 294, a majority of 13, in favour of an amendment laid by anti-European Tories calling for a real-terms cut in the European Union's budget.
Earlier, Mr Cameron had attempted to appease his backbenches by publicly stating that, in an ideal world, he too would want a cut. But the move, a significant shift on his public negotiating stance, backing a budget freeze, fell on deaf ears.
Although it is not binding – simply requiring ministers to "take note" – the result will embolden Tory Eurosceptics, threatening to re-open the bitter divisions over Europe which tore the party asunder in the 1990s.
Leading Conservative rebel Peter Bone hailed what he called a remarkable victory.
"Parliament spoke for the people," he said. "There was enormous pressure on colleagues to vote with the Government.
"It was a very significant victory for the people. It was because MPs have to face their constituents."
Labour's decision earlier this week to back the amendment and exploit divisions within the Tories proved decisive.
The rebels claimed the vote strengthened Mr Cameron's hand and that he could now go to Brussels to demand a budget cut.
It will increase pressure on the Prime Minister ahead of what will now be tense EU negotiations in just a few weeks.
Downing Street has consistently emphasised the difficulty of getting any agreement among EU countries. Not only do all 27 have to sign up but currently 17 member states receive more money from the EU than they put it in, giving them little incentive to back anything except a budget increase.
Mr Cameron had earlier attacked Labour for what he said was "rank opportunism" – which voters would see through – for announcing support for a cut this week.
However, Labour's Kate Hoey said the vote was a victory for the country and those hard-pressed people, who she said were fed up giving millions of pounds to the EU coffers.
At Prime Minister's Questions, Labour leader Ed Miliband accused his rival of "throwing in the towel" over a cut before the negotiations had even begun.
To cheers from Labour MPs he told the Commons: "He is weak abroad, he is weak at home. It's John Major all over again."
In a speech today, Nick Clegg will attack both Labour and the Tory rebels.
A spokesman for the Liberal Democrat Deputy Prime Minister said before the vote the outcome would make no impact on his stance that the UK should argue for a freeze.
Mr Clegg will say today: "The Coalition Government's position remains the same: We will not accept an increase, above inflation, to the EU Budget. That is a real-terms freeze. We will protect the British rebate in full."
He will also accuse Labour of acting as if they could "wave a magic wand over the negotiations and convince 26 other countries to agree". The party had a "dishonest and hypocritical" change of heart, he will say.
Aides said the Deputy Prime Minister's attack was not just on Labour but also on the Tory rebels.
Last night Labour Shadow Chancellor Ed Balls said the vote had been a "humiliating defeat for David Cameron ,which shows how weak and out of touch he has become". He added: "At a time when schools and police budgets are facing deep cuts at home, it cannot be right that the EU budget should rise in line with inflation.
"We need a real-terms cut and reform of the EU budget, but David Cameron is too weak and has failed to build the alliances needed to deliver it. David Cameron has failed to convince his own backbenchers, just as he is failing to convince other European leaders."
Contextual targeting label: