Kamala Harris went on the offensive against Donald Trump in a fiery televised debate Tuesday, getting under her rival's skin as they battled for a breakthrough in an agonizingly close election.
In a performance that earned her the endorsement of pop superstar Taylor Swift, the Democrat clashed with the "extreme" Republican on hot-button issues from abortion to democracy and accused him of being a friend to dictators.
Trump repeatedly raised his voice as he hit back at the vice president on immigration and the economy, branding her a "Marxist" and blaming her for what he said were the failings of President Joe Biden's administration.
The former president claimed after that the ABC News-hosted clash in Philadelphia was his "best debate", while Harris's campaign also claimed victory and challenged him to a second debate in October.
With less than two months until the election, Harris, 59, was under pressure to deliver in front of an audience expected to run into the tens of millions after her sudden replacement as the Democratic candidate in place of Biden.
She started on the front foot by surprising Trump by approaching him to shake his hand before they took to their lecterns.
Then the niceties ended.
Trump, who only a few weeks ago had believed himself to be cruising to victory, reacted to pressure from Harris by resorting to the kinds of finger-jabbing insults and meandering invective that he uses at his rallies.
Harris responded by looking on in amusement and occasionally exclaiming "c'mon", before declaring that she represents a fresh start after the "mess" of the Trump presidency -- and saying: "We're not going back."
'Eat you for lunch'
One of their most intense exchanges was on abortion.
Trump insisted that while having pushed for the end of the federal right to abortion, he wanted individual states to make their own policy.
Harris said he was telling a "bunch of lies" and called his policies "insulting to the women of America."
Stay informed. Subscribe to our newsletter
Within minutes, Trump hammered at the Democrat's weak spot on immigration by falsely claiming that she and Biden had allowed "millions of people pouring into our country from prisons and jails, from mental institutions and insane asylums."
Harris pointed out that Trump is a convicted felon, called him "extreme" and said it is "a tragedy" that throughout his career he had used "race to divide the American people."
The rivals also clashed on foreign policy, with Harris telling Trump that Russian President Vladimir Putin would "eat you for lunch" when it came to the war in Ukraine and that foreign dictators were "laughing" at him.
Trump shot back by accusing Harris of being weak on the war in Gaza, saying she "hated Israel" and that Israel would be "gone" within two weeks if she was president.
Another jarring clash came as Trump doubled down on his unprecedented refusal to accept losing to Biden in the 2020 election, before trying to overturn the result.
Harris responded by mocking his catchphrase as a reality TV star, saying that Trump had been "fired by 81 million people."
Swift endorsement
Taylor Swift broke her silence on US politics minutes after the debate, backing Harris as president and praising her as a "steady-handed, gifted leader."
Her message on Instagram -- which received 3.6 million likes in the space of an hour -- was signed off "childless cat lady" in a jibe at an insult that Trump's running mate J.D. Vance directed at Democrat-supporting women.
The last presidential debate in June had resulted in a crushing victory for Trump after Biden delivered a catastrophic performance that ended up dooming his reelection campaign.
Biden said the Harris-Trump debate "wasn't even close", in a post on X.
Trump had long seemed invulnerable. He has been convicted of falsifying business records to cover up an affair with an adult film star, found liable for sexual abuse, and faces trial on charges of trying to overturn the 2020 election -- and still is polling neck-and-neck with Harris.
But Harris clearly needled him on one of his favorite, if less serious topics: the size of his trademark rallies.
Attendees, she said, prompting an angry retort, were leaving early out of "exhaustion and boredom."
At another moment where Trump appeared to be losing his cool, he talked at length about a debunked conspiracy theory that Haitian immigrants have been eating local people's pets in Ohio.
"They're eating the dogs, the people that came in, they're eating the cats," he said before being corrected by the ABC News moderator that the authorities in the town of Springfield have said this did not happen.