Four Republican presidential candidates faced off tonight in the wake of Mitt Romney’s evisceration of Donald Trump in a speech earlier in the day. Trump’s opponents on the stage picked up where Romney left off.

Trump proved early on to be the vulgarian Romney accused him of being. Holding up his hands, he insisted they were large and that he “guarantees” there is no problem with his, er, manhood. Score one for Romney.

Early on Sen. Marco Rubio (R-Fla.) launched assaults on Trump’s record, bizarre ideas and character. He lambasted Trump for personal insults, for not knowing what the nuclear triad is and for failing to embody the party’s conservative values. He jabbed at him for making his clothing line overseas and for swindling the unwary. Most effectively, Rubio pointed out that Trump resorted to personal insults because he has no substantive answers. Trump complied by keeping up the insults, calling the Florida senator “Little Marco” over and over again. Once again he made Romney’s point that Trump is a childish bully.

Most successfully, Rubio launched an attack on Trump University, saying Trump was willing to say anything to get people’s money. He got a strong assist from Megyn Kelly who confirmed Trump University’s most recent grade from the Better Business Bureau was a D-, not an A as Trump claimed. She batted away his bogus excuses, reminding the audience Trump is accused of fleecing students. With Trump insisting it was “a small civil case” and vowing that we will find out in “years” who is right, he made Rubio’s point: Trump truly is someone with disdain for the little guy. On the catastrophe in Flint, Michigan, Rubio gave a deft answer to support infrastructure repair while slamming Democrats for politicizing the issue. He likewise was sure-footed on the Second Amendment. He also showed his wit, interrupting Cruz telling Trump to “breathe, breathe” with a lighthearted request, “When they’re done with yoga, can I answer a question?” In one of his best moments he implored the voters to take foreign policy seriously, pointing out Trump is incapable of giving a detailed answer. Although at times he seemed to recede from view and seemed a bit tired, the arguments against Trump he has been making on the trail dominated much of the debate. There will be plenty of material for the ads.

Cruz had his best debate of the primary, methodically attacking Trump on the audio tape and citing his employment of illegal immigrants. The Texas senator, ironically, made the case for a calm and collected commander in chief. He jabbed Trump for liberal donations to politicians and for refusing to disclose his off-the-record audio tape, purportedly, which expressed flexibility on his immigration plans. (Trump feigned respect for the New York Times in refusing to release a tape of his off the record conversation, as if this was for their benefit, not to conceal his mixed message on immigration.) Cruz, not known for his serene manner, made the case for a clam and collected commander in chief. He lectured Trump to stop interrupting, and warned voters with Trump as the nominee, potentially facing a fraud trial, the Democrats would eviscerate him. He gave a solid answer analyzing the liberal mismanagement of Detroit, Michigan. If only Cruz had been this focused on Trump from the get go, rather than bolstering him for months, the race might be different.

Trump was on defense much of the evening. Moderator Chris Wallace dinged him repeatedly, telling him his budget numbers “don’t add up.” Wallace proceeded to put the figures up on the screen, proving that Trump was making up numbers. He declared he was “changing” on legal immigration and now wants to let in more skilled workers. Both Rubio and Cruz hit him repeatedly both on refusing to hire locally and withholding the Times audio tape. Trump bizarrely insisted the military would follow illegal orders to carry out torture and going after terrorists’ families. And when confronted with clips of his flip-flops, Trump rambled, struggling to explain why he changed his stance repeatedly. (He dubbed this “flexibility.”) He also acknowledged a flip-flop on the assault weapons ban. Immediately after denying he had complimented Putin, the moderators played a Kasich ad mocking him for doing just that. As the evening went on, he looked sweaty and panicked.

As for Kasich, unlike his colleagues, he did none of the heavy lifting in confronting Trump. He stuck to self-serving and sanctimonious lines, repeating stories about what voters tell him on the trail. This is plainly just an ego trip for him.

After two hours successfully battering Trump, showing his abject unseriousness and lack of character, the candidates acknowledged at the end they would support Trump if he were the nominee. This is bad in principle and bad politics. The country should understand just how unfit he is to serve.

Will any of this matter? The mainstream media insist it is too late to knock down Trump. If any debate could do it, however, this one might change the narrative. Trump is vulnerable on multiple fronts. Tonight it showed.

WINNERS: #NeverTrump, Megyn Kelly

LOSERS: Trump and those trying to excuse his egregious rhetoric and dishonesty