Preheat and prep: Heat your oven to 375°F (190°C).
Lightly grease a 9x13-inch baking dish with cooking spray or a thin swipe of oil.
Slice the potatoes: Wash and thinly slice the potatoes, about 1/8 to 1/4 inch thick. Thinner slices cook more evenly and get tender faster.
Cook the beef: In a large skillet over medium-high heat, cook the ground beef until browned, breaking it up as it cooks. Drain excess fat if needed.
Add aromatics: Stir in the onion and cook 3–4 minutes until softened.
Add the garlic and cook 30 seconds until fragrant.
Season the mixture: Stir in salt, pepper, paprika, and thyme. Taste and adjust seasoning. If using mushrooms or bell peppers, sauté them here until slightly softened.
Make the sauce: In a bowl, whisk the condensed soup with the milk until smooth.
This becomes the creamy binder for the casserole.
Layer the casserole: Spread half the potato slices in the dish. Top with half the beef mixture. Pour over half the sauce.
Sprinkle a handful of cheese. Repeat with remaining potatoes, beef, and sauce.
Dot with butter: Scatter the butter pieces on top to help the potatoes stay moist and flavorful.
Cover and bake: Cover tightly with foil and bake for 45 minutes. This steams the potatoes so they turn tender.
Uncover and finish: Remove the foil, sprinkle the remaining cheese on top, and bake another 15–20 minutes, until the top is bubbly and the potatoes are fork-tender.
Rest and garnish: Let the casserole rest 10 minutes before slicing.
Garnish with parsley or chives and serve warm.