Preheat the oven to 180°C (160°C fan).
Wash and halve the aubergines lengthways. Scoop out the flesh with a spoon, leaving a 1cm border, and finely chop the reserved flesh.
Sprinkle the aubergine halves with salt and place them cut-side down on kitchen paper for 15–20 minutes to draw out excess moisture. Pat them dry.
Line a baking tray with baking parchment and arrange the aubergine halves on it. Roast for 20–25 minutes, until tender.
While the aubergines roast, heat a little extra-virgin olive oil in a frying pan over medium heat. Add the chopped onion and sauté for 5–7 minutes, until translucent.
Add the garlic and cook for 1 minute. Then add the minced beef, breaking it up with a spoon, and fry for 8–10 minutes, until browned.
Stir in the chopped aubergine flesh and cook for another 5 minutes. Pour in the tomato passata (or tomato sauce) and simmer gently for 10–15 minutes, until the sauce thickens. Season with salt and pepper.
To make the béchamel, melt the butter in a saucepan over medium heat. Stir in the flour and cook for 1–2 minutes. Gradually whisk in the warm milk and cook, stirring constantly, for 5–7 minutes, until thickened. Season with salt, pepper and a pinch of nutmeg.
Spoon the meat mixture into the roasted aubergine shells. Pour over the béchamel and sprinkle with grated cheese.
Increase the oven temperature to 200°C (180°C fan) and bake for 15–20 minutes, until the cheese is golden and bubbling. For an extra crisp top, grill on high for the final 5 minutes.
Serve piping hot. Store any leftovers in the fridge for up to 2–3 days and reheat in the oven or microwave.