MPs have voted 319 to 248 for a 1.25 percentage point rise in National Insurance for workers and employers to help fund health and social care.
Boris Johnson hopes the tax increase, which breaks a Conservative manifesto pledge, will raise £12bn a year.
The prime minister said his plan would deal with “catastrophic costs” faced by those who need care.
But Labour raised concerns that people could still have to sell their home in order to pay for the help they need.
During a House of Commons debate, some Conservative MPs also raised objections to the proposals.
Former minister Steve Baker called on his party to “rediscover what it stands for” rather than “every time there is a squeeze on the public finances, coming back for higher taxes”.
Opposition MPs voted against the rise but the government, which has a majority of more than 80, comfortably won the vote.
Five Conservatives – Sir Christopher Chope, Philip Davies, Neil Hudson, Esther McVey and John Redwood – voted against the changes.
Thirty-seven Conservative MPs abstained. However, while some abstained due to concerns about the tax rise, others may simply been given permission to miss the vote.