The vote passed in a 400 to 175 vote. Voting lists show that 136 Conservatives opposed the bill, including Environment Secretary Owen Paterson and Welsh Secretary David Jones, eight junior ministers and eight whips.
As for the remaining Conservative MPs, 127 voted in favour, 35 did not vote and five voted both in favour and against. Even though Cameron won the support of about 127 Tory MPs, he failed to win more than half of the 303 MPs.
The bill will likely reach the statute book as long as it passes through the Lords. Support from Labour and Liberal Democrat MPs ensured it got a second reading, which signifies that they approve it in principle.
Protesters in Birmingham (Getty images)
MPs were given a free vote on the bill, which meant that they were supposed to vote based on their consciences rather than party whips.
Prime Minister David Cameron tweeted “Strong views exist on both sides but I believe MPs voting for gay people being able to marry too, is a step forward for our country”.
Helen Grant, junior justice minister, said: “As Tories we do differ at times. We have squabbles – we’re like any other family”.
She did describe the bill as “a major step forward for equality and justice”.
Christian protesters in London (Getty images)
Deputy Prime Minister and Lib Dem leader Nick Clegg said: “I genuinely believe that we will look back on today as a landmark for equality in Britain … No matter who you are and who you love, we are all equal. Marriage is about love and commitment, and it should no longer be denied to people just because they are gay”.
Conservative MP David Burrowes said: “We do respect the equal value of men and women, but that surely doesn’t avoid us looking and celebrating the difference, and marriage is a great way of celebrating the difference between a man and a woman.
“We have been the ones showing ourselves to have a grown-up, free-vote, conscience issue debate, and we shouldn’t hide behind the fact that we’re going to be divided on this issue”.
Image via Getty