Boris Johnson has secured MPs’ backing for his controversial £12 billion tax hike to pay for health and social care despite seeing his Commons majority cut.