Bernie Sanders has won the New Hampshire Democratic primary contest, on a terrible night for former vice-president Joe Biden.
The left-wing senator took a tight victory over centrist former mayor Pete Buttigieg, who offered a different Democratic vision in the race to take on President Trump in November.
Mr Sanders declared the night "the beginning of the end" of Mr Trump.
Success in New Hampshire - like Iowa - offers momentum for the race ahead.
Finishing behind Vermont senator Mr Sanders were two moderates - Mr Buttigieg and Minnesota senator Amy Klobuchar, who emerged as a surprise contender by taking third place.
Massachusetts senator Elizabeth Warren and Mr Biden - two erstwhile frontrunners - finished in fourth and fifth places.
Technology entrepreneur Andrew Yang and Colorado senator Michael Bennet both dropped out of the race.
What were the results in New Hampshire?
Some 280,000 Democratic voters cast ballots in the Granite State on Tuesday night, delivering 26% to Mr Sanders.
With 95% of the vote counted, Mr Sanders, 78, led Mr Buttigieg, the 38-year-old the former mayor of South Bend, Indiana, by only 1.6%, or about 4,300 votes.
Mr Sanders hailed a "great victory" as he thanked supporters from a rally in Manchester, New Hampshire.
"This victory here is the beginning of the end for Donald Trump," he said, and promised to build an "unprecedented multi-generational, multi-racial political movement" to defeat the Republican.
The result will give Mr Sanders nine of the 24 delegates who will represent New Hampshire at the July Democratic national convention, where the party crowns a nominee based on the delegates won.
Although he had fewer votes, Mr Buttigieg will also get nine delegates. Thanking supporters, he warned against succumbing to "a polarised vision" of politics and pitched himself as the centrist to bring new voters into the party.
Unlike in Iowa last week, where turnout was disappointing, New Hampshire voters turned out in higher numbers than in 2016.