
Preheat oven to 200°C/390°C (180°C fan-forced).
Cook beef - Heat the oil in a large 30cm/12" pan over high heat. Add the beef and cook, breaking it up as you go, until you no longer see red. Cook for another couple of minutes, breaking up the beef into fine pieces. Remove beef from the pan using a slotted spoon, leaving the fat and juices behind.
Cook onion - To the same pan, add the onion and garlic. Cook for 5 minutes, stirring regularly, until the onion is translucent.
Simmer and reduce - Add the beef and mix through. Stir in the spices. Add the flour and mix until you no longer see flour. Add the stock and stir - it will thicken into a gravy quite quickly, coating the beef. Lower heat to medium and cook for 5 minutes, stirring regularly so the base doesn't catch, until the mixture is thick enough so you can draw a path across the base of the pan and it stays.
Remove from stove and spread in a 23 x 33 cm (9 x 13") pan, then set aside and let it cool while you make the corn.
Sauté - Melt the butter in a pot over medium high heat. Add corn (still frozen is fine) and cook for 5 minutes, stirring regularly.
Blitz - Add milk, salt and basil. Stir, then use a stick blender to blitz ~ 30 seconds (moving it around) or until you no longer see whole corn kernels. It won't be complete smooth which is what you want.
Thicken - Stir in cornmeal. Lower heat to medium or medium low so it's not spitting. Cook for 5 minutes, stirring regularly so the base doesn't catch. It should be thick enough to mound in a heap on the spoon, and when you draw a path across the base it should stay in place.
Assemble - Press the eggs into the beef, scatter with olives and raisins.
Corn topping - Dollop the corn mixture across the surface then spread and smooth the surface. Sprinkle all over with the sugar, then paprika (sprinkle from a height for light coverage).
Bake for 40 - 45 minutes until the surface is golden. Cool 15 minutes to let it set a bit so you can cut neat(ish) slices, then cut like lasagna and serve!