Colorado Attorney General Phil Weiser defeats incumbent Senator Michael Bennet in a decisive primary victory, positioning himself as the likely Democratic nominee for governor.

The air inside the Denver convention center still hums with the residual energy of a crowd that refused to believe the pundits. It’s 7:55 p.m. on a Tuesday in June, and the Associated Press has just called it. The margin is decisive: Phil Weiser, Colorado’s attorney general, is leading U.S. Senator Michael Bennet by ten percentage points. Five-five to forty-five. The math is simple. The politics, however, were anything but.
Bennet called Weiser to concede about ten minutes later, a polite end to a campaign that many locals assumed was already over before it truly began.
Here’s the thing though. When Bennet entered the race in April 2025, polling showed it was his to lose. He was the incumbent senator with name ID. He had the Denver mayor’s backing. Three of Colorado’s four U.S. House Democrats jumped on his bandwagon immediately. State legislative leaders threw their weight behind him. It looked like a coronation.
Weiser, who had jumped into the contest months earlier, refused to back down. He was the underdog. He built a machine from scratch. And yet, he defeated the senator who was supposed to be untouchable.
“Weiser will in all likelihood be elected governor in November,” the AP noted, and that matters because Colorado hasn’t elected a Republican governor since Bill Owens in 2002. The state is shifting blue, fast. But this primary wasn’t just about the general election; it was about who gets to define the party’s future.
Weiser’s victory speech at his packed watch party was a masterclass in gratitude and grievance. “Together we pushed forward,” he told the crowd. “We did the hard work. Words cannot convey the gratitude I feel to everybody in this room. This victory belongs to all of you for knocking on doors, for posting on social media, for hosting events, for nudging friends to vote, for so much more. This movement is what democracy looks like.”
He didn’t just win. He proved the establishment wrong.
“Over the last year, the establishment pundits and so many others said this wouldn’t be a race at all, it would be a coronation,” Weiser said. “They counted us out, and they underestimated all of you. Together, we pushed forward. We did the hard work, and we proved the establishment wrong.”
The key to the upset? It wasn’t just policy. It was a narrative about Trump.
While Bennet claimed he’s been a fighter against Trump’s policies in the Senate, Weiser attacked him for voting to confirm several of President Donald Trump’s appointees. It was a confusing but potent message: Bennet’s seniority was too valuable to lose, even if it meant bending the knee. Weiser touted the dozens of lawsuits his office has filed against the Trump administration, positioning himself as the aggressive defender of Colorado’s rights.
“In Colorado, in the face of a lawless, bullying Trump administration trying to intimidate us, rip away our rights and freedoms, you made clear that we need a leader who will fight back and never bend the knee,” Weiser said.
Bennet’s campaign suffered from what could be called a failure to launch. “Tonight’s results are not what we wanted,” Bennet said at his own watch party, surrounded by his wife and three daughters. “We came up short. And while that is disappointing — and I’d be lying if I said I wasn’t — I do not regret for a second the campaign that we ran or the cause that we fought for.”
The policy differences between the two were minimal. Both wanted to increase housing supply. Both wanted to reduce regulatory burdens for builders. Both wanted to expand healthcare access and change the state’s decades-old revenue and spending limit. The differentiator was style, and it was Trump.
Weiser, the first major Democratic candidate to jump into the race at the start of 2025, had the early advantage. He had a year to define Bennet before Bennet could define himself. By the time the senator fully woke up, Weiser had already built a coalition that included the grassroots activists who had been ignored by the establishment.
Now, the focus shifts to the Republican primary. State Sen. Barb Kirkmeyer had a slight lead over nonprofit ministry leader Victor Marx, both carrying a large margin over state Rep. Scott Bottoms, as of 11:15 p.m. The winner of that race will face Weiser in November.
It’s a familiar script for Western Slope folks who have watched Colorado turn blue. The general election is a formality. The real drama is in the primary, where the establishment gets checked by the energized base.
Weiser’s win sends a clear message to Denver’s political elite: money and name ID aren’t enough if you don’t respect the voters. The attorney general knocked on doors. He posted on social media. He nudged friends. He did the hard work.
And as the lights dim in the Denver convention center and the supporters begin to file out into the cool June night, the message is clear. The future of Colorado’s governor’s office isn’t being decided by out-of-state billionaires or establishment pundits. It’s being decided by people who showed up.





