Heat a large skillet over medium-high heat and cook ground lamb in 2 batches, breaking it up with a wooden spoon, until no pink remains and the meat is browned, about 5 minutes per batch. Transfer to a plate and drain excess fat if needed.
1.5 lbs ground lamb
In the same skillet, add diced onion, carrots, and celery (if using) and cook over medium heat, stirring occasionally, until softened, about 8 minutes. Add minced garlic and tomato paste and cook, stirring constantly, for 1-2 minutes until fragrant.
1 medium onion, 2 medium carrots, 2 stalks celery, 2 cloves garlic, 2 tbsp tomato paste
Return browned lamb to the skillet, add broth and Worcestershire sauce, and stir to combine. Bring to a simmer, then reduce heat to low and cook uncovered for 15-20 minutes, stirring occasionally, until the sauce thickens and reduces by about one-third.
1.5 lbs ground lamb, 1 cup beef or lamb broth, 1 tbsp Worcestershire sauce
While filling simmers, peel and cut potatoes into 2-inch chunks and boil in salted water until fork-tender, about 15 minutes. Drain, return to pot, and let sit off heat for 2 minutes to dry. Mash with butter and milk until smooth and creamy.
2 lbs russet or Yukon gold potatoes, 4 tbsp butter, 0.5 cup milk or cream
Transfer lamb filling to a 9×13-inch baking dish and spread mashed potatoes evenly on top, using a fork to create texture. Bake at 375°F for 30-35 minutes until edges bubble and topping is golden. Broil for 2-3 minutes if you want a crispier crust. Let rest 5-10 minutes before serving.