Place the potatoes in a large pot, cover with water, and bring to a boil. Cook until fork-tender, about 15 minutes. Drain, then return the potatoes to the pot.
Add 2 tablespoons butter, milk, salt, and pepper to the potatoes. Mash until smooth and creamy. Set aside.
Heat the remaining 2 tablespoons butter in a large skillet over medium heat. Add the onion and carrots and cook until they begin to soften, about 5 minutes.
Add the ground beef and cook, breaking it up with a spoon, until browned. Stir in the garlic and cook for 1 minute.
Stir in the tomato paste, beef broth, Worcestershire sauce, and thyme. Simmer for 8 to 10 minutes until the liquid reduces slightly. Stir in the peas and cook for 2 more minutes.
Preheat the oven to 400°F. Transfer the beef mixture to a 9x9-inch baking dish and spread the mashed potatoes evenly over the top.
Bake for 20 minutes until the potato topping is lightly golden. Let rest for 5 minutes before serving.