Trump has faced days of criticism over his first comments after Saturday's unrest in Charlottesville, when a rally by neo-Nazis and white supremacists over the removal of a Confederate statue erupted in clashes with counter-demonstrators.
A suspected Nazi sympathizer then plowed his car into a crowd of anti-racism protesters, leaving one woman dead and 19 others injured. The driver, James Fields, has been charged with second-degree murder.
At first, on Saturday, Trump only said there were violence "on many sides," prompting a backlash. On Monday, he singled out the Ku Klux Klan and neo-Nazis as "criminals and thugs."
But on Tuesday, he was visibly annoyed with continued questioning about the issue.
"I think there is blame on both sides," Trump said in a rowdy exchange with reporters at Trump Tower in New York, where he was presenting infrastructure measures.
"You had a group on one side that was bad. You had a group on the other side that was also very violent. Nobody wants to say that. I'll say it right now," Trump added.
"What about the alt-left that came charging at, as you say, at the alt-right? (...) There are two sides to a story."
When asked why he waited until Monday to explicitly condemn hate groups present in Charlottesville, Trump said he wanted to be careful not to make a "quick statement" without all the facts.
"If the press were not fake and if it was honest, the press would have said what I said was very nice," the president added.
He called Fields a "disgrace to himself, his family and this country."
The president also defended his controversial far-right chief strategist Steve Bannon, saying: "I like Mr Bannon. He's a friend of mine... He is a good man. He is not a racist."