6 tablespoons unsalted butter, plus for buttering casserole dish
2 tablespoons olive oil
3 russet potatoes
Kosher salt and black pepper
4 spring onions or 1 medium yellow onion, chopped
4 cloves garlic, smashed and roughly chopped
3 pounds 80/20 ground beef
¼ cup chili powder
One 28-ounce can diced tomatoes, drained
2 cups beef broth
2 tablespoons all-purpose flour
1½ cups fresh or thawed frozen peas
12 ounces extra-sharp Cheddar, grated
¼ cup finely grated Parmesan
Preheat the oven to 425 degrees F. Butter a 9-by-13-inch casserole dish.
Heat the olive oil and 2 tablespoons of the butter in a small saucepan over medium heat until the butter has melted.
Shred the potatoes and add to a medium bowl. Pour the butter-oil mixture over the potatoes, add 1/2 teaspoon salt and 1/2 teaspoon pepper, and stir to combine. Set aside.
In a large saute pan over medium heat, melt the remaining 4 tablespoons butter. Add the spring onions and garlic; stir, and cook until the onions are soft and translucent, 3 to 5 minutes. Add the ground beef and cook, stirring occasionally, until browned. Stir in 1/2 teaspoon salt, 1/2 teaspoon pepper and the chili powder.
Add the tomatoes, beef broth and flour. Increase the heat to medium-high and bring the mixture to a boil, stirring occasionally. Reduce the heat and simmer until thickened, 6 to 8 minutes. Reduce the heat further and stir in the peas and Cheddar; cook until the cheese is melted. Transfer to the prepared casserole dish.
Evenly cover the top of the casserole with the grated potato mixture and sprinkle with the Parmesan. Bake, uncovered, until crisp on top and bubbling, about 20 minutes. Let rest for 5 minutes before serving.