For the Mashed Potatoes:
3 1/2 pounds (1.6kg) russet potatoes (about 4 large), peeled and cut into 1-inch pieces
6 tablespoons (85g) unsalted butter, cubed
For the Meat Sauce:
1 1/2 cups (360ml) homemade or store-bought low-sodium chicken stock
2 packets unflavored gelatin (about 5 teaspoons; 1/2 ounce; 14g)
2 tablespoons (30ml) vegetable oil
2 1/2 pounds (1kg) ground beef or lamb, or some combination (see note)
1 large yellow onion (about 14 ounces; 400g), diced
3 medium carrots (about 8 ounces; 225g), diced
2 ribs celery (about 4 ounces; 110g), diced
2 medium cloves garlic, minced
2 tablespoons (30ml) tomato paste
1 cup (240ml) dry red wine
2 sprigs thyme
1 bay leaf
1 tablespoon (15ml) Worcestershire sauce
1 teaspoon (5ml) Marmite (optional)
2 tablespoons (15g) all-purpose flour
8 ounces (225g) frozen peas
Kosher salt and freshly ground black pepper
1 1/2 cups (360ml) heavy cream
Grated Parmigiano-Reggiano cheese, for topping (optional)
1. For the Mashed Potatoes: Set cubed potatoes in a colander and rinse under cold water until water runs clear. Transfer to a large saucepan and cover with cold water by at least 2 inches. Season water with salt until almost as salty as the sea. Bring water to a boil over high heat, then reduce heat to medium-low and simmer until a knife easily pierces potatoes with no resistance, 10 to 15 minutes. Drain potatoes in colander, then rinse with hot running water for 30 seconds. Transfer potatoes to a large bowl.
2. Using a potato masher, food mill, or ricer, mash potatoes with butter. Press surface smooth, then press plastic wrap directly against surface to prevent a skin from forming. Set aside until ready to assemble.
3. Meanwhile, for the Meat Sauce: Place stock in a 2-cup liquid measuring cup, sprinkle with gelatin, and set aside.
4. Heat oil in a large Dutch oven over high heat until shimmering. Add half of ground meat and cook, stirring and scraping bottom of pot, until well browned, 6 to 8 minutes; use a potato masher or large whisk to break up meat. Add remaining meat and cook, breaking up with masher or whisk, until reduced to small bits, about 3 minutes; lower heat as necessary to prevent scorching. If meat has rendered an excessive amount of fat, use a metal spoon to ladle most of it out, leaving just a few tablespoons in the pot. Add onion, carrots, celery, and garlic and cook, stirring and scraping bottom of pot, until just beginning to soften slightly, about 4 minutes.
5. Add tomato paste and cook over medium heat, stirring, for 1 minute. Add red wine and bring to a simmer over high heat. Cook, scraping up any browned bits, until almost fully evaporated. Add reserved chicken stock, thyme, bay leaf, Worcestershire, and Marmite, if using. Sprinkle flour over ground meat in pot, then stir in. Bring to a simmer, then reduce heat to low and simmer until sauce is reduced and thick, about 20 minutes. Discard thyme sprigs and bay leaf. Stir in peas and season with salt and pepper.
6. To Assemble and Bake: Adjust oven rack to center position and preheat oven to 425°F (218°C). Before assembling, heat cream in a large saucepan until simmering. Add potatoes and stir gently until completely incorporated. Season with salt and pepper. Potatoes are now ready for assembly.
7. Set a 9- by 13-inch baking dish on a foil-lined rimmed baking sheet. Add meat sauce, being careful not to fill more than halfway. (You might not need all of the sauce, depending on the exact size of your baking dish.) Top with mashed potatoes, spreading them with a spatula to cover surface completely. Using spatula, create a dappled pattern on top of potatoes. Sprinkle with grated Parmesan cheese, if using.
8. Transfer to oven and bake until top is browned and casserole is fully heated through, about 20 minutes. For deeper browning, place casserole on a rack set about 6 inches under a hot broiler for the last few moments of cooking. (Monitor closely to prevent potatoes from burning.)
9. Let stand 15 to 20 minutes before serving. Casserole can be assembled, wrapped with plastic, and refrigerated up to 2 days. Reheat in a 350°F oven for about 35 minutes, then use broiler to brown top.