01 - Preheat the oven to 400°F.
02 - Boil the potatoes in a large pot of salted water until fork-tender, about 15-20 minutes. Drain well.
03 - Mash the potatoes with butter, warm milk, Parmesan, salt, and pepper until creamy. Set aside.
04 - While potatoes cook, heat olive oil in a large skillet over medium heat. Add onion and garlic; sauté 2-3 minutes until soft.
05 - Add carrots and celery; cook for another 4-5 minutes.
06 - Stir in ground beef; cook until browned, breaking it up with a spoon. Drain excess fat if needed.
07 - Mix in tomato paste, Worcestershire sauce, thyme, rosemary, salt, and pepper. Stir well.
08 - Pour in beef broth; simmer uncovered for 8-10 minutes until slightly thickened.
09 - Stir in frozen peas; cook 2 minutes more.
10 - Transfer the beef mixture to a greased 9x13-inch baking dish.
11 - Spread the mashed potatoes evenly over the meat filling; use a fork to create ridges for browning.
12 - Bake for 20-25 minutes until the top is lightly golden. Broil for 2-3 minutes if a crispier top is desired.
13 - Let stand 5 minutes before serving.