Bring a large pot of water to the boil. Peel and chop the potatoes into small, even pieces. Add to the pot and cook for 10–12 minutes, or until soft.
Meanwhile, heat the olive oil in a large frying pan over medium-high heat. Add the onion and garlic and cook for 1 minute.
Add the carrots and cook for 3–4 minutes, until starting to soften.
Add the beef mince and cook, breaking it up as you go, until browned.
Add the diced tomatoes, beef stock, crumbled stock cube, Worcestershire sauce and thyme. Season with salt and pepper. Bring to a simmer and cook for 10–12 minutes, stirring occasionally, until the mixture has thickened to a gravy-like consistency.
While the beef mixture is simmering, drain the potatoes and mash with the butter and milk until smooth.
Preheat the grill to high. Transfer the beef mixture to a large ovenproof dish and spread the mashed potato evenly over the top. Sprinkle with the shredded cheese and Parmesan.
Place under the grill for 3–5 minutes, or until the cheese is melted and golden. Keep a close eye on it as it can brown quickly. Serve immediately and enjoy!