In a suitably sized pot/pan, fry your onions, garlic, carrot and mushrooms in a drizzle of olive oil over medium heat until they begin to soften and brown. Add your beef, break it up with your wooden spoon and continue to frying until brown all the way through.
Pour in your wine and leave to simmer for around 5 minutes to burn off the alcohol and allow the beef to soak up the flavour.
After, add your beef stock, gravy granules, Worcestershire sauce, tomato puree, thyme, rosemary, bay leaf, salt & pepper (to taste) and leave to simmer over low heat for a good 30-45 minutes, stirring occasionally. At this point it will look like you've got way too much liquid but it will naturally thicken, so fear not.
Whilst your beef is simmering, get started on the mash. Whack your peeled potatoes in a pot of salted boiling water for around 15mins or until soft enough to comfortably slice. Drain (don't rinse) and place back in the pot. Mash with butter, half your cheese, nutmeg and generous helpings of salt & pepper until a smooth texture. Add cream/milk until desired texture. Leave to one side and preheat oven to 390F/200C.
In a baking dish, firstly pour in your beef (removing bay leaf), top the beef with your mash and finish with a layer of cheese. Pop in the oven for around 30mins or until golden and crispy on top. Leave to sit for a few minutes to retain shape and then serve.