Cover 2 lb peeled and cubed russet potatoes with water and 1 tsp kosher salt in a large saucepan. Bring to a simmer and cook until tender, 8–10 min.
Drain and mash potatoes until smooth.
Whisk ½ cup whole milk and 1 large beaten egg; stir into the potatoes with 4 Tbsp melted unsalted butter, 1 tsp kosher salt, and ¼ tsp black pepper. Cover and set aside.
Heat a 10″ cast-iron skillet over medium heat for 3 min.
Add 2 Tbsp unsalted butter, 2 chopped carrots, 1 chopped onion, and ¾ tsp kosher salt; cook until softened, 5 min. Add 1½ lb lean ground beef; cook until no longer pink, 8–10 min.
Stir in 2 Tbsp tomato paste, 2 minced garlic cloves, and 2 tsp thyme; cook 1 min.
Sprinkle 2 Tbsp flour over the meat; cook 1 min.
Gradually stir in 1½ cups chicken broth and 2 tsp Worcestershire sauce. Simmer until thickened, 10 min.
Remove from heat, stir in 1 cup frozen peas, and season with salt and pepper.
Adjust oven rack 5″ below the broiler and preheat the broiler.
Spoon beef filling evenly in the skillet. Transfer potato mash to a 1-gal zipper-lock bag, snip off one corner for a 1″ opening, and pipe over the filling. Smooth with a spoon and create ridges with a fork.
Place the skillet on a rimmed baking sheet and broil until topping is golden and crusty, 5–10 min.
Let cool for 10 min before serving.