Preheat the oven to 200C/180C Fan/Gas 6.
Heat a large, non-stick saucepan over a medium heat. Add the onion and mince and dry-fry for 8-10 minutes, stirring regularly until the mince has browned.
Sprinkle the flour over the lamb and stir well. Add the carrots, courgettes, tomatoes, tomato purée, water and herbs and stir again to combine. Crumble over the stock cube, season with salt and pepper.
Bring to the boil, then simmer for 25-30 minutes, stirring regularly, until the sauce has thickened and the vegetables have almost completely broken down.
Meanwhile, bring a saucepan of water to the boil. Add the potatoes and cook for 15-20 minutes, or until soft but not falling apart.
Transfer the filling mixture to a 2 litre/3½ pint shallow ovenproof dish and place on a baking tray.
Drain the potatoes and return to the pan. Add the butter and mash until smooth, then beat in the milk until fluffy. Stir in half of the cheese. Mix in the cauliflower and season with salt and pepper. Add a little extra milk if required.
Spoon the mash on top of the lamb and spread evenly. Sprinkle over the remaining cheese. Bake for 25-30 minutes, or until the cheese has melted and turned golden-brown and the filling is bubbling.