But he didn’t suggest going halves until after he already knew that your meal was free!
£12.95 your meal
£20 his steak and dessert
£8 drinks (I’m going to assume 50:50)
So if you’d each paid for your own and no free meal, you’d have paid £16.95
You actually paid £14. You’re already £2.95 up.
You wanted to only pay £8
You’re taking the piss! What kind of friend says, “I’ll take all the discount for myself, ta.”
Fair enough if they didn’t charge you because they knocked it over you and you still have cleaning charges to pay. But you said yourself - your mistake, and you liked the meal. So of course you share the good fortune of the free meal.
Now if he said, “let’s go halves” before ordering, and didn’t say when the bill came, “Ooooh - halves isn’t fair is it?” then he’s an arsehole. But it’s in your OP that he suggested halves only after your meal was deducted. And you still ended up paying less than the actual original cost of your meal plus drinks. You’re so utterly taking the piss here complaining!