The issue in tonight’s Tea Party debate was supposed to be Texas Gov. Rick Perry’s controversial statements on Social Security. It did come up, but the fireworks turned out to be on immigration and on his mandatory HPV vaccination, when Rep. Michele Bachmann (R-Minn.) finally awoke from her slumber and, along with a very effective Rick Santorum, pummeled Perry on the topic. As in the first debate, Perry started strong and lost steam and ground later in the debate. It was the second uneven but not disastrous performance for him, topped off by an atrocious answer on Afghanistan.

All afternoon, the political chatter was about Social Security. Perry tried to tone down his rhetoric in a USA Today op-ed. Mitt Romney released a clip of Perry saying it shouldn’t be a federal program. Jon Huntsman criticized them both. Louisiana Gov. Bobby Jindal endorsed Perry and neatly sidestepped a question in a pre-debate interview about whether it’s true that “Perry [is] vulnerable, especially to a general election audience for having the view that... Social Security is essentially unconstitutional. It shouldn’t be there.” Jindal stressed that Perry was being bold in raising Social Security’s viability.

Sure enough, Social Security was the first topic in the debate and generated some heat. Perry did not put the issue behind him. He promised Social Security would be there for seniors, but wasn’t pressed by moderator Wolf Blitzer on his incendiary language. However, Mitt Romney did that, reciting chapter and verse of Perry’s book in which Perry argued that Social Security should go back to the states and suggesting that it is unconstitutional. Perry seemed hesitating, speaking slowly, and surprisingly doubled down on the suggestion that states could be allowed to opt out. If conservatives were looking for evidence that Romney was exaggerating Perry’s disdain for the federal program, they didn’t find it. The issue remains. And with each outing, Perry’s negative stance toward the federal program becomes harder to explain to independents and moderate Republicans.

Throughout the evening, Romney proved the better debater (projecting command of his facts and a forceful tone) and the better prepared of the two front runners. He gave solid answers on jobs and on his desire to reform entitlements. He rattled off a series of steps (albeit generic ones) for balancing the buget. On RomneyCare, he’s perfected the delivery of his defense (e.g. he didn’t raise taxes, he’ll repeal ObamaCare), but he likely isn’t convincing anyone in the GOP base. He scored a foreign policy point by promising to return the Winston Churchill bust that President Obama removed.

Perry was at his best reciting his states’ jobs record, although Newt Gingrich deflated his bubble a bit by pointing out that government doesn’t create jobs. Perry simultaneously tried to change his views (in his book, he was against Medicare Part D, now he is for it; in the past he opposed national tort reform, in the debate he supported it) while refusing to give ground rhetorically. He staunchly defended giving in-state tuition to illegal immigrants — prompting a chorus of boos. He stood firm on HPV mandatory vaccination, saying only he shouldn’t have resorted to an executive order. One of his worst moments came late in the debate, when he agreed with Jon Huntsman about the urgency of returning troops from Afghanistan. Did he forget his talking point? He’s supposed to be against timetables and premature withrawals.

His defining characteristic seems to be a refusal to admit error when challenged. That may appeal to hard liners, but it will continue to provide fodder for his opponents. Moreover, he flagged as the debate wore on, much the way he did last time. Soon he will be required to put more meat on the bones of his policy positions.

Rick Santorum was the unexpected surprise, reciting his own record on Social Security reform and defending the market-based Medicare Part D. (Perry, to the surprise of many Tea Partyers, also said he’d keep Medicare Part D.) Santorum sounded level-headed on the Federal Reserve, urging that it focus solely on sound money. He was impassioned on spurring manufacturing job growth. He lit on fire when he condemned Perry for “big government run amok.”And he socked it to for Ron Paul for seeming to blame the U.S. for Sept. 11. He was forceful and, indeed, eloquent on American exceptionalism.

Meanwhile, Bachmann shied from taking on the front-runners for much of the debate. She declined to take the bait on criticizing Perry for saying Federal Reserve Chairman Ben Bernanke’s conduct was “treasonous.” However, she finally rose to the occasion in criticizing Perry on HPV mandatory vaccinations, calling it “plain wrong." She also accused Perry flat-out of being influenced by a contribution from the drug manufacturer. In a bizarre exchange, Perry said he was offended if she was accusing him of being bought for only $5,000. (But bigger donors could have tempted him?) She shot back, “I’m offended for the 12-year-old girls.” That round went to Bachmann, but whether it is important enough to trip up Perry is very questionable. She made a bigger impression later in the debate castigating Perry for his in-state tuition break for illegal aliens.

The winners: Santorum — not a bad answer all night, and sounded better than most of the others; Perry on jobs; and Romney for overall strong answers and precision in his arguments.

The losers: Perry on everything else, Bachmann (who still isn’t on a par with Romney and Perry); national security (almost entirely ignored); Perry spinners who insist Social Security isn’t an issue for the Texas governor; and Paul, who was finally unmasked as a crackpot and apologist for our enemies (reciting Osama bin Laden propaganda).

More on the GOP debate from PostOpinions

Milbank: Under attack, Perry stumbles

Dionne: GOP’s Social Security hypocrisy

Stromberg: Perry’s substance vs. Romney’s substance

Bernstein: GOP spins further from reality

Thiessen: A pathetic national security debate

Petri: Rick Perry’s sinister vaccines