Preheat the oven to 400°F (200°C).
In a large pot, boil the cubed potatoes in salted water until tender, about 15-20 minutes. Drain and return to the pot.
Add milk, butter, salt, and pepper to the potatoes. Mash until smooth and creamy. Set aside.
In a large skillet, heat olive oil over medium heat. Add the diced onion and garlic, and sauté until softened, about 3-5 minutes.
Add the ground beef or lamb to the skillet, breaking it apart with a spoon. Cook until browned, about 5-7 minutes.
Stir in the carrots, peas, tomato paste, Worcestershire sauce, thyme, rosemary, and beef broth. Simmer for 5-10 minutes until the mixture thickens. Season with salt and pepper.
Transfer the meat mixture to a baking dish and spread the mashed potatoes evenly on top. If desired, sprinkle shredded cheddar cheese over the potatoes.
Bake in the preheated oven for 25-30 minutes, or until the top is golden brown and crispy.
Let cool for a few minutes before serving.