Heat 1 tablespoon of the oil in a large saucepan, add the beef, in batches if necessary, season and cook for 7–10 minutes until browned. Remove from the pan.
Add the remaining oil to the pan and cook the onion for 5 minutes until softened. Stir in the garlic, chilli, spices, oregano and cocoa powder and cook for 30 seconds, then add the tomatoes. Bring to the boil, then return the meat to the pan and simmer for 1 hour until tender, topping up with water if necessary.
Stir the beans and red pepper into the stew and cook for a further 15 minutes, then leave to cool slightly.
Meanwhile, make the topping. Tip the flour and polenta into a bowl. Whisk in the egg, oil and milk until smooth and season well with salt. Spoon the meat mixture into a medium-sized baking dish. Dollop over the topping, spaced slightly apart, then sprinkle with the cheese.
Bake in a preheated oven, 180°C (350°F), Gas Mark 4, for 35–40 minutes until golden and cooked through.