Beto O'Rourke, the former Democratic congressman considering a White House run, and President Donald Trump traded blows in rival rallies in El Paso, Texas, over the Republican push for a border wall.
O'Rourke, a rising Democratic star, blasted Trump for stoking "false fear" about immigrants and telling "lies" about his hometown El Paso, which Trump said was a dangerous place before it had a border fence.
"Here is one of the safest cities in the United States of America, safe not because of walls but in spite of walls," O'Rourke told a crowd of several thousand supporters, many waving "Beto 2020" signs.
Two hundred yards away in El Paso County Coliseum, Trump told his supporters that O'Rourke had "little going for himself."
"We are all challenged by a young man who lost an election to (Republican Senator) Ted Cruz," said Trump, surrounded by banners reading "Finish the Wall."
Trump was in El Paso to argue for a wall he says can protect Americans from violent criminals, drugs and a "tremendous onslaught" of migrant caravans.
The rally was his first clash with a potential 2020 rival, albeit on separate stages.
As Trump and O'Rourke spoke, US congressional negotiators in Washington said they had reached a tentative deal on border security funding to avert another partial government shutdown.
An aide said it did not include the $5.7 billion Trump had demanded for his wall.
Trump said he had heard about progress in the talks before he took the stage, but did not mention details.
"Just so you know - we're building the wall anyway," he said.
In his State of the Union speech, Trump said the border fence separating El Paso from Mexico reduced the city's high crime rate.
El Paso's Republican mayor, Dee Margo, said the city had been safe for years before the wall was built.
"We were, I think, the No. 2 or No. 3 safest city before the fence went up and we progressed into No. 1," he told Fox News. "We were significantly low on crime to begin with and always have been."
Although O'Rourke's full-throated denunciation of the president sounded like a campaign speech, the two-time congressman declined to discuss a potential run on Monday.