Heat the oven to 180°C / 350°F. Lightly grease the baking dish and set it close by so the warm filling can go straight in when it is ready.
Put the bread in part of the milk and let it soften fully. Squeeze it gently, crumble it with your fingers, and keep any suitable milk aside for the topping instead of throwing it away too quickly.
Warm the oil in a large pan over medium heat. Add the onion and cook it slowly until it is soft and glossy; add the garlic near the end if using so it does not catch and turn bitter.
Add the ground meat and cook until it changes colour and breaks into small pieces. Stir patiently, spooning off excess fat if the pan looks greasy, because Ouma wants the filling rich but not oily.
Sprinkle in the curry powder, turmeric, optional coriander, optional cinnamon, salt, and pepper. Stir for a minute so the spices wake up in the warm pan before the wet ingredients go in.
Mix in the softened bread, chutney or apricot jam, vinegar or lemon juice, and optional raisins or sultanas. Cook until everything is combined and the filling is moist enough to spoon, not soupy and not dry.
Taste the filling before it goes into the dish. Add a small pinch more salt, a little sweetness, or a tiny splash of vinegar or lemon only if the balance needs it.
Spoon the filling into the prepared baking dish and smooth the top gently. Do not press it down hard; a light hand keeps the finished bobotie tender.
Whisk the eggs with the milk, optional turmeric, and a pinch of salt until smooth. Pour the topping evenly over the filling, letting it settle into the corners.
Lay the bay leaves on top if using. Bake for 30–40 minutes, until the topping is softly set, lightly golden, and no loose liquid wobbles in the centre.
Rest the bobotie for about 10 minutes before serving. This helps the slices hold together and keeps the first spoonful from falling apart.
Serve warm with rice, chutney, and a fresh side if desired. Put it down family-style and let everyone take the piece with the most golden topping.