For the Filling:
2 tablespoons unsalted butter
1 large onion, chopped fine
2 medium carrots, peeled and chopped fine
2 pounds 85 percent lean ground beef
1/2 teaspoon salt
1/2 teaspoon pepper
5 tablespoons all purpose flour
1 tablespoon tomato paste
1/4 cup heavy cream
1 ¾ cups low-sodium chicken broth
3/4 cup Guinness Beer
2 tablespoons soy sauce
2 teaspoons minced fresh thyme leaves
1 cup frozen peas
For the Topping:
2 ½ pounds russet potatoes. peeled and cut into 2-inch pieces
2 tablespoons unsalted butter, melted
1/3 cup heavy cream, warmed
1 large egg, beaten
Salt and pepper to taste
To make the filling: in a large skillet over medium heat, melt butter and cook until foaming.
Add onion and carrots and cook until soft, about 8 minutes.
Add the ground beef, salt, and pepper; cook, breaking up meat into small pieces with wooden spoon, until browned, about 12 minutes.
Add flour and tomato paste and cook until paste begins to darken, about 1 minute.
Add the heavy cream and cook until it spatters, about 1 minute. Add broth, beer, soy sauce, and thyme and simmer over medium heat, stirring frequently, until mixture is thick but still saucy, about 15 to 20 minutes. Remove from heat, stir in peas, adjust seasonings to taste, and transfer to broilersafe 2-quart casserole dish.
To make the topping: Heat oven to 375 degrees. In a large saucepan over high heat bring potatoes, ½ teaspoon salt, and water to a boil. Cover and reduce heat to medium-low and simmer until tender, 15 to 20 minutes. Drain potatoes, return to saucepan, and mash potatoes with butter and cream until smooth. Season with salt and pepper.
Spread potatoes over filling, using spatula to smooth top. Brush with egg and drag fork across top to make ridges. Bake until filling is bubbling, about 15 minutes.
Turn on broiler and cook until top is golden brown, 3 to 5 minutes. Remove from oven and cool 10 minutes. Serve.