You could have been forgiven for imagining you were lost in a 2019 time warp. The House of Commons debating the Brexit withdrawal bill, nearly a year after that very bill had been passed. A bill that had been negotiated by the prime minister, declared “an oven-ready triumph” by the prime minister and on which he had won an 80-seat majority at the general election after promising a despairing country that he would “Get Brexit Done”. On the plus side, though, we were treated to one of the best speeches of this and recent parliaments from Ed Miliband as he comprehensively ripped Boris Johnson’s facile and fraudulent arguments to shreds. Admittedly, it wasn’t the hardest of tasks, up against a man who can barely remember what he believed yesterday or even what excuses he might have made for his failures, but Miliband left Boris hopelessly exposed. It wasn’t immediately clear why Johnson had even made the last-minute decision to open the debate in person, as the business secretary, Alok Sharma, had been originally handed the poisoned chalice. And would probably have done a far better job as Sharma has the unique talent of putting even himself to sleep whenever he opens his mouth. But perhaps hubris got the better of Boris. Or maybe he’s just a common crook who can’t resist returning to the scene of the crime. Either way, his guilt oozed from every pore. This was Boris at his very worst. Normally Johnson has little trouble in dealing in bullshit and lies: in fact he has made a career out of it. Yet right from the very start, he appeared nervous and defensive, even though a near empty chamber saved him from having to take too many embarrassing interventions from both the opposition and Conservative benches. Instead, what we got was total incoherence. The EU wasn’t negotiating in good faith. It was trying to blockade clotted cream being imported to Northern Ireland from Devon. The EU was trying to destroy the Northern Ireland protocol and no British parliament could possibly sign up to this. Except of course, it already had. Under his own leadership. Boris refused almost all interventions from the Labour benches, instead choosing to take those from the intellectually challenged Andrea Jenkyns and the timid rebel Bob Neill, who said he might be prepared to break international law provided parliament was allowed a specific vote on it first. Boris happily indulged him in this nonsense. Just one Tory, the former attorney general Jeremy Wright, challenged Boris on the ministerial code of breaking international law. Johnson ummed and ahed and said that Suella Braverman – a lawyer whom you wouldn’t trust to witness a passport application and had been chosen as attorney general for her compliance – had reckoned that the government could do anything Boris wanted it to. Wright – as with all the other former Tory attorney generals, prime ministers and cabinet ministers of any integrity – just shook his head in disbelief. Under normal circumstances, the Labour leader would have replied for the opposition. But Keir Starmer was self-isolating after one of his children had been found to display coronavirus symptoms, so Miliband, as shadow business secretary, got to make the speech he had originally prepared. And Miliband couldn’t believe his luck, because many of his jibes might have fallen flat had they been levelled at Sharma. So much more fun to have the person actually responsible for trashing the reputation of both the country and the Conservative party in front of you rather than a dull-witted apparatchik. Miliband didn’t put a foot wrong, both goading the prime minister for his failure to understand key aspects of the Northern Ireland protocol and inquiring how he expected other countries to take us at our word if we were so willing to break international treaties, before taking him down point by point. At first Boris merely rolled his eyes, willing Ed to disappear, but by the end there was nothing but stone-cold fury in his stares. Boris has been found out countless times before by almost everyone who has had the misfortune to have dealings with him, but seldom so comprehensively and so publicly. Or with such obvious enjoyment. Miliband knew he had Johnson bang to rights as a second-rate conman and wasn’t going to let him off the hook. All his arguments were delivered with the panache and flourish of a man who knew he had right on his side. Even the Tories sensed it with only Bernard Jenkin foolish enough to intervene on the prime minister’s behalf. Miliband did for him in a couple of short sentences, saying that the Tory-led Northern Ireland select committee had reported that the EU had been negotiating in good faith. What followed was one highlight after another. Serial incompetence of a man who couldn’t remember it was his deal he was reneging on. The list of politicians who agreed that the deal had protected the Northern Ireland protocol. The observation there was already a dispute resolution procedure that didn’t involve the failed state option. But the collector’s item was his invitation for Boris to back up his assertion that the withdrawal agreement imposed a blockade on GB goods into Northern Ireland. “Come on,” Ed said, his voice laced with condescension. “I know you’re a details man. Show me the blockade. I will give way to you.” Boris remained almost immobile, the blood draining from his face. He was so, so busted. But Miliband wasn’t finished. He also enjoyed himself with the five possible reasons for breaking the law. Especially the one about doing so in a specific and limited way. As if not going really big by actually invading Brussels and executing Michel Barnier somehow made it OK. He did, though, leave out a sixth reason. That Boris has yet to come across a law that ever applied to him. The speeches that followed were something of an anticlimax in comparison. Bill Cash found that he could be even more angry now that Brexit was happening than when it wasn’t, while SNP leader Ian Blackford attacked Johnsons’s proposals to remove powers from the devolved governments. Not that Boris was there to hear them. He had sneaked out of the chamber shortly after his evisceration. It turns out that Boris does have a humiliation threshold after all. And Miliband had just found it. This article was amended on 15 September 2020 to remove an erroneous reference to narcolepsy.