He utilized much of his time recounting his actions in the wake of the white nationalist rally that left one woman dead in central Virginia. He assigned much of the blame to the "dishonest people in the media," whom he portrayed as having unfairly covered his condemnation of the "hatred, bigotry and violence" in Charlottesville — a denunciation he delivered the day of the rally, saying blame lay "on many sides."
At Tuesday's rally, Trump reread the initial statement he made in the wake of the Charlottesville violence but excluded the controversial "on many sides" line.
His detractors accused him of being slow to specifically identify the hate groups that contributed to the clashes, recognition that eventually arrived in a speech two days after the rally.
"I got them all," he added.
But Trump avoided mention of a combative press conference last week that amounted to a third review of the events in Charlottesville. Facing questions from reporters at the time, he largely doubled down on his original address, assigning "blame" for the violence to "both sides."
The event Tuesday night came after Phoenix Mayor Greg Stanton expressed his disappointment in Trump's decision to hold a rally organized by his presidential campaign committee after the violence in Charlottesville and appealed that it be postponed.
"I am disappointed that President Trump has chosen to hold a campaign rally as our nation is still healing from the tragic events in Charlottesville," Stanton said in a statement on Aug. 16. "It is my hope that more sound judgment prevails and that he delays his visit."
But the rally went as planned, with protesters gathered in the city's sweltering heat before Trump arrived Tuesday — a fact he downplayed once behind the lectern.
"There aren't too many people outside protesting," Trump told the convention center crowd at the start of his speech.
Trump previously said he was "considering a pardon" for Arpaio, though the White House denied it would be announced during the rally.
"Do the people in this room like Sheriff Joe?" asked Trump.
"I'll make a prediction. I think he's going to be just fine, OK?" Trump continued. "But I won't do it tonight because I don't want to cause any controversy. Is that OK? ... But Sheriff Joe can feel good."
Trump made veiled complaints about the recent decision of Arizona Sen. John McCain to vote against a repeal of the Affordable Care Act — an effort that fell one vote short.
"We were just one vote away from victory after seven years of everybody proclaiming 'repeal and replace,'" said Trump. "One vote away.
"I will not mention any names," he added. "Very presidential, isn't it? Very presidential."
Trump's visit to Arizona placed attention on his relationship with not just McCain but also Sen. Jeff Flake, who is running for re-election next year.
On Twitter on Thursday, Trump bashed Flake as "toxic" and a "non-factor in the Senate." He also tweeted that it's "great to see" Republican Kelli Ward running against Flake — an unusual move, since presidents typically do not side against their party's incumbents in primary contests.
As with McCain, Trump did not mention Flake by name but, after referring to the health care vote, said, "nobody wants me to talk about your other senator, who's weak on borders, weak on crime. So I won't talk about him. Nobody wants me to talk about him. Nobody knows who the hell he is."
"And now — see, I haven't mentioned any names — so now everybody's happy," said Trump.
ABC News' Jordyn Phelps, Benjamin Siegel and Veronica Stracqualursi contributed to this report.