Preheat oven to 400°F. Place potatoes and cauliflower in a large pot, cover with water, and bring to a boil. Cook for 15 minutes until fork-tender.
Drain potatoes and cauliflower, then return to pot. Add milk and 1 tablespoon butter, and mash until smooth and creamy. Season with salt and pepper. Set aside.
While vegetables cook, brown ground beef in a large oven-safe skillet over medium-high heat. Drain any excess fat and transfer beef to a plate.
In the same skillet, melt remaining 1 tablespoon butter. Add onion and carrots, cooking for 5 minutes until softened. Add garlic and cook 1 minute more.
Sprinkle flour over vegetables and stir for 1 minute. Add beef broth, tomato paste, Worcestershire sauce, and thyme. Bring to a simmer, stirring constantly until thickened.
Return cooked beef to skillet along with frozen peas. Stir to combine and season with salt and pepper to taste.
Spread mashed potato-cauliflower mixture evenly over the meat filling. Use a fork to create texture on top (this helps it get crispy!).
Bake for 20-25 minutes until the top is lightly golden and the filling is bubbling. Let rest for 5 minutes before serving.