David Cameron and Jeremy Corbyn have exchanged verbal blows in a furious House of Commons spat over anti-Semitism, as the Prime Minister demanded that the Labour leader withdraw a previous description of Hamas and Hezbollah as “friends”.

Mr Corbyn insisted that “I absolutely do not approve of those organisations” and said that Mr Cameron should follow his lead in launching an inquiry into racism within his own party.

In exchanges on the eve of crucial elections taking place across the UK, Mr Corbyn accused the campaign of Conservative candidate for London mayor Zac Goldsmith of “systematically smearing” his Labour rival Sadiq Khan.

The clash came as two more Labour councillors were suspended over allegations of anti-Semitism.

Miqdad Al-Nuaimi, a councillor in Newport, South Wales, and Terry Kelly, who sits on Renfrewshire Council, have been suspended “pending an investigation”, a Labour spokesman said.

At Prime Minister’s Questions, Mr Cameron quoted Mr Corbyn’s comments as a backbench MP, when he said he had invited “our friends” from Hamas and Hezbollah to speak at an event.

Mr Cameron said: “He referred to Hamas and Hezbollah as his friends. He needs to withdraw that remark.”

And – in a reversal of normal PMQs protocol – he directly asked the Labour leader: “Are they your friends or are they not? Because these organisations in their constitutions believe in persecuting and killing Jews. They are anti-Semitic organisations, they are racist organisations.

“He must stand up and say they are not his friends.”

Mr Corbyn responded: “Obviously, anyone who commits racist acts or is anti-Semitic is not a friend of mine. I am very clear about that.”

He insisted that the event Mr Cameron mentioned was intended to promote the peace process in the Middle East, and that “I absolutely do not approve of those organisations”.

Labour had suspended members involved in anti-Semitic activities and statements and had established an inquiry into the issue led by Shami Chakrabarti, he said.

And he told the PM to “think for a moment about the conduct of his party and his candidate in the London mayoral election and the way in which they are systematically smearing my friend, the member for Tooting, our candidate for mayor.”

Mr Cameron responded by repeating claims that Mr Khan had shown a “pattern of behaviour” in appearing on platforms alongside people like “Sajeel Shahid, the man who trained the ringleader of the 7/7 attacks and accused the US of bringing the 9/11 attacks on themselves” and “an extremist who called for Jews to be drowned in the ocean”.

“If he wants to know why he has a problem with anti-Semitism, it’s because his candidates share platform after platform after platform with extremists and anti-Semites and then excuse their words,” Mr Cameron told MPs.

Mr Corbyn said the PM had tried to “smear” Mr Khan by linking him with preacher Sulaiman Ghani, who had turned out to be “an active Conservative supporter”.

And he quoted a former Conservative candidate who said she would be voting Labour in the mayoral election because she was “ashamed of the repulsive campaign of hate” conducted by the Tories.

“He should reflect on the words said by Lord Lansley some years ago, that racism is endemic in his party,” said Mr Corbyn. “We have set up a commission of inquiry. I suggest he might think about doing the same thing.”

Mr Cameron said Mr Corbyn’s attempts to deal with anti-Semitism were “utterly condemned to failure”. Labour was a “party that puts extremists over working people”, he claimed.

“The truth is this, he may be a friend of the terrorist group Hamas but he is an enemy of aspiration,” said the Conservative leader.

The dramatic Commons clash came as Mr Khan apologised for referring to moderate Labour councillors as “Uncle Toms”.

Speaking to ITV News London, Mr Khan acknowledged that the comment, made in a television interview in 2009, had been an offensive racial slur.

He said: “It is, and I regret using that phrase.

“The context was me trying to encourage everyone to get involved in government consultations.

“I was a minister at the time. It was wrong and I regret it.”

Accusations of anti-Semitism have engulfed Labour since Mr Corbyn was elected leader last year.

He set up an independent investigation into the issue, along with other forms of racism within the party, amid criticism of the way controversial comments by prominent figures had been handled.

Mr Corbyn’s comments about Hamas and Hezbollah emerged during his leadership bid. He defended the description, saying he had used the word “friends” in a “collective way”.

Chief Rabbi Ephraim Mirvis said Labour had a “severe” problem with anti-Semitism which would get worse if the party’s inquiry into the issue was used as “sticking plaster” to placate voters.

A spokesman for the Labour leader later said that Mr Corbyn’s use of the term “friends” to refer to Hamas and Hezbollah was “about a diplomatic term of address in a meeting about peace and reconciliation”.

“He has been involved in peace and reconciliation processes all over the world, including Latin America, the Middle East, Ireland and elsewhere and he will continue to pursue dialogue in areas of conflict, as he always has done,” said the spokesman.

“He has been involved in various peace and reconciliation initiatives in which all the parties to the conflict have been met.”

Mr Corbyn was “more than happy” to meet the Israeli government but had no immediate plans to visit Israel.

The spokesman added: “Jeremy has said repeatedly that anti-Semitism in any form in society and in the Labour Party is completely unacceptable and repugnant and will be acted upon, and he has acted on it.

“In the time that he’s been leader, 18 people have been suspended in relation to anti-Semitic allegations or incidents, and every single one of those has taken place within 48 hours.

“I should say that getting on for half of those relate to incidents or online posts before Jeremy Corbyn was leader. He has taken more action, more quickly, than any other Labour leader or any leader of any other party.”