Speaking to a crowd of thousands within sight of the El Paso County Coliseum, where Trump spoke, the former Democratic congressman delivered an energized speech that recalled those he delivered in his unsuccessful U.S. Senate campaign, a contest that vaulted him to the national stage. Amid wide expectation that he will launch a bid for the presidential nomination in 2020, O’Rourke evoked key themes he honed while campaigning across the state ― calling for a pathway to citizenship for so-called Dreamers and other undocumented immigrants, and urging the country to welcome asylum seekers.

In stark contrast to Trump’s doomsday vision of a crime-infested region under assault from foreign criminals, O’Rourke offered a glowing vision of the border zone. Noting that migrants are statistically less likely to commit crimes than the native-born, O’Rourke insisted that cities like El Paso, his hometown, are among the country’s safest precisely because of their strong immigrant presence.

“In El Paso, we are secure because we treat one another with dignity and respect. That is the way that we make our communities and our country safe,” O’Rourke said at the event. “We know that walls do not save lives. Walls end lives.”

The speech marked O’Rourke’s first foray onto the national stage since conceding the Senate race to Republican Ted Cruz in November. Since then, he has maintained a low profile, rarely speaking to the press and offering only oblique remarks about whether he will launch a presidential bid. He told Oprah Winfrey earlier this month that he would decide before the month was out ― a remark he repeated to supporters who shouted the question at him during Monday’s event.

But the crowd seemed optimistic. Several people waved flags reading “Beto for president” or “Beto 2020.” The banners employed the same black-and-white graphics used in his Senate race, which saw voter turnout more than double in some border counties.

O’Rourke addressed the crowd at the same time Trump took the stage for his own rally just a few miles away. The president flew to the border city to make yet another public demand for $5.7 billion to begin construction on a border wall. Similar demands led to the country’s longest government shutdown shortly before Christmas and lawmakers have been stymied thus far in their efforts to negotiate with the White House on a government funding package that would keep the nation running for the rest of the year.

Trump cited El Paso in his State of the Union speech last week in an appeal to obtain money for the border wall, falsely claiming that the city was among the country’s most violent until the federal government began fencing it off from its Mexican neighbor of Ciudad Juárez. (In fact, the city’s decrease in violent crime predated the wall.)

It was those remarks, along with Trump’s choice to hold a campaign rally in the heavily Latino border town, that prompted more than 50 civil rights and advocacy groups to organize the rally where O’Rourke delivered the final address.

Trump doubled down on his calls for a wall on Monday, saying his plans along the Rio Grande separating the U.S. and Mexico were already moving forward.

“Today we started a big beautiful wall right on the Rio Grande,” Trump told supporters at the event, which was filled to capacity. “Right smack on the Rio Grande.”

The size of the crowds at the dual rallies symbolized a wider schism between the values of two social movements that will likely define the politics of 2020 ― one fixated on security that views the border as a threat and an alternate view that champions openness.

The president addressed the lawmaker’s competing event before flying out of Washington, telling reporters that he had a “very long” line at his rally and that, though O’Rourke had one too, “it’s a tiny, little line.”

O’Rourke’s rally, however, began with a large march through El Paso. Organizers estimated the crowd numbered 7,000 at its peak, citing law enforcement figures.

John Campa, 30, said he had never attended a rally until two weeks ago. Monday night’s march was his second, and he anticipated he would join more in the future because of Trump’s hostility toward his hometown.

“Long story short, I don’t like what he has to say about El Paso,” Campa told HuffPost. “El Paso Is love. We gotta make our voices heard.”

Rally-goers at times chanted “no more lies” as they followed O’Rourke during the march, which numbered in the thousands, according to estimates by local media.

“We’re doing this because we’re a community that’s proud to be inclusive, proud to be welcoming ” said Robert Heyman, policy director for the Border Network for Human Rights. “We’re proud to stand against President Trump’s racism, against Trump’s wall.”

O’Rourke challenged his supporters to champion policies of inclusion during his speech, painting El Paso as a city built around community, not division.

“We are making a stand for truth against lies and hate and ignorance and intolerance,” O’Rourke said. “We are going to show the country who we are. We’re going to make a stand to ensure that we live up to our promise, to our potential, to our purpose as a country.”

This article has been updated with more details from the Beto O’Rourke rally.

CORRECTION: A previous version of this story indicated O’Rourke was a 2016 Senate candidate instead of 2018.