01 - Preheat oven to 400°F.
02 - Place potatoes in a large pot and cover with salted water. Bring to a boil and cook until tender, about 15-20 minutes. Drain and return to pot.
03 - Add butter and warm milk to potatoes. Mash until smooth and fluffy. Season with salt and pepper. Set aside.
04 - Heat olive oil in a large skillet over medium heat. Add onion and carrots. Cook until softened, about 5 minutes.
05 - Stir in garlic and cook for 1 minute. Add ground beef and cook until browned, breaking up with a spoon, about 8 minutes. Drain excess fat if needed.
06 - Stir in tomato paste, Worcestershire sauce, thyme, rosemary, salt, and pepper. Cook for 1 minute.
07 - Pour in beef broth and simmer for 5 minutes, until slightly thickened. Stir in frozen peas and cook for 2 minutes.
08 - Transfer beef mixture to a 9x13-inch baking dish. Spread mashed potatoes evenly over the top, smoothing with a spatula.
09 - Bake for 20-25 minutes, until the top is lightly golden and filling is bubbling. For a browner top, broil for an additional 2-3 minutes.
10 - Let rest for 10 minutes before serving.