The government's majority was cut to 21 as MPs voted by 323 votes to 302 to approve government plans to raise the cap on annual tuition fees for universities in England to as much as £9,000.
They subsequently voted by the same margin in favour of a second motion, which raises the basic threshold to up to £6,000 a year.
On 9 December 2010, ministers asked the Commons to support the changes, which will be introduced for the 2012-13 academic year.
The government says that the £9,000 cap would only apply if universities met conditions on widening participation.
But Labour's Barry Sheerman, a former chairman of the Commons Education Select Committee, warned: "Policy made speedily, on the hoof, fast, is not good policy.
"The fact is this is a piece of legislation that is being rushed through in a way that is a disgrace to parliamentary procedure and to this House and to higher education out there."
Liberal Democrat MP Greg Mulholland said: "Sometimes governments are wrong and sometimes you need the courage to say so and I am doing that today.
"I am voting against the government today because I simply cannot accept that fees of up to £9,000 are the fairest and most sustainable way of funding higher education."
Fellow Lib Dem MP John Leech told MPs: "I will be voting against an increase in tuition fees simply because I think an increase in the cap will discourage some young people from going to university in the future."
But Tory backbencher Sam Gyimah said: "If there is any lie that is being perpetrated in this debate it is that somehow there are working-class children who want to go to university who can't get to university.
"The truth is that our education system is so bad that, for a lot of under-privileged kids, the whole concept of university is just simply academic."
Watch the opening part of the debate