British Prime Minister Rishi Sunak was dealt a major political blow on Friday as the governing Conservatives suffered a bruising in two key by-elections but averted a complete whitewash as the party held on to his former boss Boris Johnson's seat in London.