Heat olive oil in a large pan over medium heat.
Add onions, carrots, celery, and garlic, and sauté until softened.
Stir in minced beef and cook until browned, breaking it apart.
Mix in tomato purée, Worcestershire sauce, thyme, and rosemary.
Pour in beef stock, season with salt and pepper, and let simmer for 20 minutes until thickened.
Boil potatoes in salted water for 15 minutes until tender.
Drain and mash with butter and milk until smooth.
Season with salt and pepper, and mix in grated cheese if using.
Preheat oven to 200°C (400°F).
Spread the beef mixture evenly in a baking dish.
Top with mashed potatoes, smoothing with a spoon.
Use a fork to create ridges on top for a crispier texture.
Bake for 25-30 minutes until golden brown and bubbling.
Let it rest for a few minutes before serving.
Garnish with fresh parsley for extra flavor.
