Heat oil in a large ovenproof pan over medium heat. Add onion and garlic, cook for a minute. Then add carrot, celery and bay leave. Cook for 5 minutes or until softened.
Turn the heat up to high. Add beef and cook, breaking up the clumps with a wooden spoon. Cook until browned.
Add tomato paste, beef stock, Worcestershire sauce, oregano and season well with salt and pepper.
Bring to a simmer then reduce heat to low and cook for 30 minutes or until most of the liquid is absorbed.
Meanwhile to make the mash potato topping; place potatoes in a large pot and cover with enough cold water so that the potatoes are completely submerged. Bring to the boil on high heat then reduce heat to medium and cook for 10-12 minutes. You will know the potatoes are ready when a knife can be easily inserted with no resistance.
Drain the potatoes well and return to the pot. Add the milk and butter and mash with a potato masher until there are no lumps.
Remove the meat mixture from the heat and spoon over the mash potato. Ruffle with a fork to create some indents and then sprinkle over the parmesan cheese.
Transfer to the oven and cook for 30 minutes until the top is golden and the meat mixture is bubbling.