
This comforting meatball and potato casserole has been my weekend dinner savior for years. The combination of tender beef meatballs nestled between creamy potatoes and blanketed with a rich béchamel sauce creates the ultimate comfort food experience that never fails to bring my family rushing to the table.
I first created this dish when unexpected guests arrived during a snowstorm, and I needed something hearty yet impressive using only what I had on hand. The empty casserole dish and requests for the recipe told me I had stumbled onto something special that would become part of our regular rotation.
- Russet potatoes chosen specifically for their starchy texture that creates the perfect casserole foundation
- Ground beef with at least 15% fat content ensures juicy flavorful meatballs
- White onion adds a sweet aromatic base that complements both the meat and potatoes
- Dried paprika brings subtle warmth and beautiful color to the meatballs
- Dried parsley adds a fresh herbal note and visual interest
- Shredded mozzarella creates that irresistible golden cheesy top everyone fights over
- Butter forms the essential base for a velvety béchamel sauce
- Whole milk delivers richness to the sauce that lower fat options simply cannot match
- All purpose flour thickens the sauce to the perfect consistency for coating the casserole components
- Ground nutmeg is the secret ingredient that elevates the béchamel from good to magnificent
How To Make Meatballs with Potatoes and Cheese
- Prepare the Béchamel
- Melt butter in a skillet over medium heat until it bubbles slightly but does not brown. Add flour and whisk continuously to create a smooth paste. Continue cooking for about 6 minutes until the mixture turns a light golden color which develops a nutty flavor base. This step is crucial as it cooks out the raw flour taste.
- Incorporate the Milk
- Warm milk separately until it's hot but not boiling. This prevents the sauce from developing lumps. Add the warm milk to your roux gradually about one cup at a time while whisking vigorously. Each addition should be fully incorporated before adding more. This patient approach ensures a perfectly smooth sauce.
- Simmer the Sauce
- Bring the mixture to a gentle boil then immediately reduce the heat to maintain a slow simmer. Cook for 10 minutes stirring constantly to prevent the bottom from scorching. The sauce will noticeably thicken during this time. Season with salt pepper and the crucial pinch of nutmeg which adds complexity without making the sauce taste nutmeggy.
- Prepare the Casserole Base
- Create a beautiful foundation by arranging parboiled potato slices around your casserole dish overlapping slightly to form a solid base and border. This potato layer will become deliciously tender while supporting the meatballs and absorbing the flavorful sauce.
- Form the Meatballs
- Combine ground beef with diced onion herbs spices and seasonings using clean hands to mix gently but thoroughly. Overmixing will make the meatballs tough so stop when ingredients are just incorporated. Form uniform sized meatballs approximately 1.5 inches in diameter for even cooking.
- Assemble the Casserole
- Place formed meatballs onto the potato lined dish in a circular pattern leaving small spaces between each. Tuck additional potato slices between the meatballs creating a beautiful pattern that will be visible in the finished dish. This arrangement ensures every serving contains the perfect balance of components.
- Add Sauce and Cheese
- Pour the béchamel sauce evenly over the entire arrangement ensuring it flows between and around all elements. The sauce should nearly but not completely cover the meatballs. Sprinkle the mozzarella cheese generously across the top focusing slightly more on the center where it will bubble and brown beautifully.
- Bake to Perfection
- Bake in your preheated oven watching carefully during the final minutes. The cheese should melt completely and develop golden brown spots across the surface. These caramelized areas provide incredible flavor contrast to the creamy sauce beneath.
My absolute favorite part of this dish is how the bottom layer of potatoes absorbs the savory juices from the meatballs creating an incredibly flavorful base that might be even better than the top layer. My grandmother used to call these hidden potato pieces "the cook's reward" because they were so delicious yet often overlooked by guests.
Make Ahead Magic
This casserole can be completely assembled up to 24 hours before baking. Simply cover tightly with plastic wrap and refrigerate. When ready to cook remove from the refrigerator 30 minutes before baking to take the chill off then add an additional 10 minutes to the baking time. The flavors actually develop and improve with this rest time making it perfect for entertaining when you want to minimize last minute cooking.

Perfect Pairings
This substantial casserole needs only a simple green salad with a bright vinaigrette to create a complete meal. The acidity of the dressing provides welcome contrast to the rich casserole. For special occasions I serve it with roasted vegetables like asparagus or brussels sprouts and warm crusty bread to soak up every last bit of the béchamel sauce. A medium bodied red wine like Montepulciano or Chianti complements the flavors beautifully.
Customization Options
While the classic recipe is always a hit you can easily adapt it to your preferences. Try using ground turkey for a lighter version or substitute sweet potatoes for a more nutritious twist. For extra flavor add a layer of sautéed mushrooms between the potatoes and meatballs. During summer months I often incorporate fresh herbs like basil or oregano into the meatball mixture. You can also experiment with cheese varieties such as provolone fontina or a combination of cheeses for different flavor profiles.

Recipe FAQs
- → Can I prepare this dish in advance?
Yes, you can assemble the entire casserole up to 24 hours ahead and refrigerate it covered. When ready to serve, add an extra 10-15 minutes to the baking time if cooking from cold. The béchamel sauce may thicken in the refrigerator, so you might need to thin it slightly before assembly.
- → What can I substitute for mozzarella cheese?
Provolone, Monterey Jack, or a mild cheddar would work well as substitutes. For a more distinctive flavor, consider using Gruyère or a mixture of Parmesan and fontina. The key is choosing a cheese that melts well and complements the creamy béchamel sauce.
- → Can I use pre-made meatballs to save time?
Yes, you can use pre-made meatballs as a time-saver. Look for plain beef meatballs without added sauce. You may want to add the seasonings (paprika, parsley, salt, pepper) to the béchamel sauce instead to maintain the flavor profile of the dish.
- → What sides pair well with this dish?
This hearty casserole pairs beautifully with a simple green salad dressed with vinaigrette to cut through the richness. Roasted vegetables like asparagus, broccoli, or Brussels sprouts also make excellent accompaniments. For a complete meal, serve with warm crusty bread to soak up the delicious sauce.
- → How can I make the béchamel sauce smoother?
For an ultra-smooth béchamel, make sure your milk is warm when adding it to the roux. Add it gradually while whisking constantly. If lumps do form, you can strain the sauce through a fine-mesh sieve or blend it briefly with an immersion blender. The key is patience during the cooking process - don't rush the addition of milk.
- → Can I freeze this casserole?
Yes, you can freeze this dish either before or after baking. If freezing unbaked, assemble completely then cover tightly and freeze for up to 3 months. Thaw overnight in the refrigerator before baking, adding about 20 minutes to the baking time. If freezing leftovers, portion them into airtight containers and reheat thoroughly when ready to serve.