If you read a script of this week's PMQs it would be a clear win for Ed Miliband. He selected the right topic, prised it apart in the way which would be most damaging to the prime minister and was even a little bit funny. Cameron relied on evasion, repetition and arrogance.
But PMQs isn't judged by content, it's judged by the weird schoolboy momentum of individual flourish and crowd mentality. And in this Cameron was the easy winner. He has a tone which is simply more confident, more reliable and less grating than Miliband's, who sounds like the school prefect dobbing someone in to the teacher.
The session began with the mocking laughter of Tory MPs and ended with their chants of 'more'. Miliband actually wins his fair share of PMQs, but that does not stop it turning into a weekly reminder of how uncomfortable Labour is with its leader and how much the Tories consider him their not-so-secret weapon.
Miliband's opener was decent and encouraging. The prime minister has had two years to work on our 27 European allies in his bid for a reformed EU. How many countries support him? The correct answer, of course, is none - least of all Germany, which has now decided it's better for Britain to leave than for freedom of movement to be curtailed. Cameron can't say any of this, so he relied on his cut-and-paste retort of: "We have a plan, he has no plan".
Miliband answered: "My position is the same as his position before he lost control of his party." It was a good response. Almost all Miliband's responses which were not pre-written were good. Those prepared beforehand were dreadful.
"On Europe, he daren't say yes and he daren’t say no," Miliband said. "He’s the don’t-know prime minister." He considered this good enough to tweet afterwards. Worryingly, that suggests his office is not only incapable of writing good lines, but does not know them when they see them.
Miliband reminded Cameron of a quote from Essex MP John Baron – "the one who hasn't defected yet" – saying Cameron would never countenance leaving the EU. It's surely true. No-one who sits in Downing Street is ever going to want to take that kind of gamble. The Labour leader tried to needle Cameron with it, repeatedly asking if he would ever, under any circumstances, support a campaign to leave the EU.
Cameron insisted he had already answered. "I want to stay within a reformed EU." It is the same stock line he has used for two years. It doesn't answer the question, but he believes it comes close enough to allow him to dodgy its substance. Cameron's other tactics, beyond repetition of stock phrases, was to quote negative comments about the Labour party from its MPs – there are plenty out there – and to call Miliband "chicken".
He even reached out for immigration, demanding, rather bizarrely: "Why won't you have a referendum and will you say sorry for the mess you made of immigration?" Why those two things? Why not sausages and clouds?
He also found a way to mention welfare once or twice. Any hint of independent thought in the prime minister is now gone. He is now a Lynton Crosby meat puppet, wound up before public appearances to link stock phrases with the words 'welfare' and 'immigration'. It is depressing and predictable and we've six months more of it before May.
By the end of the session Miliband could barely be heard above the joyful din of Tory MPs. Of course, they hate hearing Cameron say he wants to stay in even a reformed EU, but they've heard it for two years now and are able to take it on the chin. That fight is for another day. Today's fight is with Labour for the keys to Downing Street, and in this they are more than willing to prioritise laughing at Miliband.
The leader of the opposition's tone stayed youthful, irritated and desperate. Look at the session written down and it is clear he has the superior tactics and wit. But it's not about what it looks like written down, it's about how it feels in the chamber. And in the chamber he struggles to be heard.