Donald Trump defended his response to the Charlottesville white supremacist violence in a divisive Arizona speech on Tuesday night, rebuking the "very dishonest media" for misrepresenting his statements.
Protesters clashed with police outside the arena in Phoenix after the rally. Police fired tear gas and smoke grenades to disperse the crowds.
Mr Trump last week blamed hatred "on many sides" for the violence ten days ago in Virginia that left a protester dead and several injured when they were run over by a white supremacist.
On Tuesday night, surrounded by his supporters after one of the most challenging periods of his young, chaotic presidency, the president re-read the three statements he had delivered in the aftermath of the violence - but omitted the "many sides" remark.
He said, getting visibly angry, that he had "openly called for healing, unity and love" in his responses.
"What happened in Charlottesville strikes at the core of America and tonight, this entire arena stands united in forceful condemnation of the thugs that perpetrated hatred and violence," he said.
The president had been widely criticised on both sides of the political spectrum and around the world for failing to condemn neo-Nazis and other hate groups by name in his initial response to the protest and then insisting there was blame on "both sides".
James Clapper, former director of national intelligence, says he questions President Trump's fitness for office https://t.co/IRRXg7paZM— CNN (@CNN) August 23, 2017
Mr Trump said the TV news channels were giving platforms to hate groups.
He claimed the networks - particularly singling out CNN - were "nervous" to have him speaking on live television.
The president said he was able to bypass the "crooked media" and get his message across on Twitter.
"If I didn't have social media I probably wouldn't be standing here," he said.
Outside the arena, hundreds of supporters and opponents of Mr Trump gathered before the rally. There were a few minor scuffles and rival chanting, as supporters shouted “Build the wall” and “Make America Great Again" and opponents shouted “Shame, shame, shame” and “No Trump, No KKK, No fascist USA”.
A handful of anti-Trump protesters turned up outside with military-style rifles and fatigues.
They described themselves as an anti-fascist group who were offended by the president's comments in the wake of the Charlottesville violence.
After the speech, CNN's Don Lemon described the president's address as "total eclipse of the facts".
The president also threatened to shut down the federal government unless Congress provides funding for his promised border wall with Mexico.
Mr Trump again suggested he would pardon former Sheriff Joe Arpaio's conviction for intentionally disobeying a judge's order in an immigration case.
"So was Sheriff Joe was convicted for doing his job?" Mr Trump asked. "I'll make a prediction. I think he's going to be just fine, OK."