Here is my favorite moussaka recipe, with layers of tender eggplant, a rich meat sauce with cinnamon and herbs, and a creamy béchamel sauce on top that gets golden brown in the oven.
This moussaka is one of those comfort food dishes that takes a little time to put together, but it’s so worth it. I like to make it on weekends when I have extra time in the kitchen, and it always makes the house smell amazing.

Why You’ll Love This Moussaka
- Authentic Greek flavors – This traditional recipe brings the real taste of Greece to your kitchen with layers of seasoned beef, creamy béchamel, and perfectly spiced vegetables.
- Make-ahead friendly – You can assemble this dish a day ahead and bake it when you’re ready, making it perfect for entertaining or meal prep.
- Impressive presentation – The beautiful golden layers make this look like something from a fancy restaurant, but it’s totally doable at home with my step-by-step instructions.
- Comfort food at its best – The combination of rich meat sauce, creamy cheese sauce, and tender vegetables creates the kind of satisfying meal that makes everyone ask for seconds.
- Feeds a crowd – This generous recipe serves 8-10 people, making it ideal for family gatherings, potlucks, or when you want plenty of leftovers for the week.
What Kind of Eggplant Should I Use?
For moussaka, you’ll want to use regular globe eggplants – those big, dark purple ones you see at most grocery stores. They’re perfect because they slice into nice, even rounds that layer beautifully in your dish. Japanese or Chinese eggplants are too thin and won’t give you the hearty layers you need, while baby eggplants are just too small to work with efficiently. When picking your eggplants, look for ones that feel heavy for their size and have smooth, shiny skin without any soft spots or wrinkles. You’ll want to salt your sliced eggplant and let it sit for about 30 minutes before cooking to draw out any bitterness and help them hold their shape better during baking.

Options for Substitutions
This classic moussaka has room for some smart swaps if you need them:
- Ground beef: Traditional moussaka uses lamb, so feel free to switch back to that if you prefer. Ground turkey or a mix of beef and pork also work well. Just adjust seasoning as needed since different meats have varying flavor profiles.
- Eggplant: This is really the star of moussaka, so I wouldn’t recommend substituting it. However, if you absolutely must, thick slices of zucchini or portobello mushrooms can work, though the dish won’t be traditional moussaka anymore.
- Pecorino Romano: Parmesan cheese works perfectly as a substitute and is often easier to find. You can also use a mix of both for extra flavor depth.
- Red wine: If you don’t cook with alcohol, just use extra beef stock plus a splash of balsamic vinegar to add that rich, tangy note.
- Fresh herbs: Dried herbs work fine – use about 1/3 the amount called for. So 1 teaspoon dried thyme instead of 1 tablespoon fresh, and 1 teaspoon dried parsley instead of 1/4 cup fresh.
- Potatoes: While not traditional in all moussaka recipes, if you want to skip them, just use more eggplant and zucchini layers instead.
Watch Out for These Mistakes While Cooking
The biggest mistake when making moussaka is not properly salting and draining the eggplant beforehand, which can leave you with a watery, bitter casserole – slice your eggplant, sprinkle generously with salt, let it sit for 30 minutes, then pat dry before frying. Another common error is rushing the béchamel sauce, which can result in a lumpy mess instead of a smooth, creamy topping – whisk constantly while slowly adding the milk to your butter and flour roux, and make sure your milk is at room temperature to prevent curdling. Don’t skip the step of letting your assembled moussaka rest for at least 15 minutes before cutting, as this allows the layers to set properly and makes serving much cleaner. Finally, watch your oil temperature when frying the vegetables – if it’s too hot, they’ll brown too quickly on the outside while staying raw inside, so aim for a gentle sizzle rather than aggressive bubbling.

What to Serve With Moussaka?
Moussaka is such a hearty, rich dish that it pairs beautifully with fresh, light sides that help balance out all those creamy, savory flavors. A classic Greek village salad (horiatiki) with tomatoes, cucumbers, olives, and feta is my go-to – the crisp vegetables and tangy feta really cut through the richness of the béchamel sauce. Warm pita bread or crusty Greek bread is perfect for sopping up any extra sauce on your plate, and a simple side of roasted vegetables like green beans or zucchini keeps things in the Mediterranean theme. Since moussaka is already pretty filling on its own, you really just need something fresh and simple alongside it.
Storage Instructions
Refrigerate: Moussaka actually gets better after a day or two in the fridge! Store it covered in the same baking dish or transfer to an airtight container for up to 4 days. The flavors really meld together nicely, making it perfect for meal prep or enjoying leftovers throughout the week.
Freeze: This dish freezes wonderfully for up to 3 months. You can freeze the whole casserole or cut it into individual portions first. Wrap tightly in plastic wrap and then foil, or use freezer-safe containers. I like to freeze individual squares so I can grab just what I need for a quick dinner.
Reheat: To warm up your moussaka, cover with foil and bake at 350°F for about 20-30 minutes if refrigerated, or 45-60 minutes if frozen. You can also microwave individual portions, but the oven gives you that nice crispy top again. Let frozen portions thaw overnight in the fridge for more even heating.
| Preparation Time | 30-45 minutes |
| Cooking Time | 75-90 minutes |
| Total Time | 105-135 minutes |
| Level of Difficulty | Medium |
Estimated Nutrition
Estimated nutrition for the whole recipe (without optional ingredients):
- Calories: 4400-4800
- Protein: 195-220 g
- Fat: 285-320 g
- Carbohydrates: 260-290 g
Ingredients
For the meat filling:
- 1 tbsp olive oil
- 1 large yellow onion, finely chopped
- 2 garlic cloves, minced
- 1.6 lb ground beef (lean recommended)
- 2 tbsp tomato paste, heaping
- 1/2 cup dry red wine (or more beef broth as substitute)
- 1 cup tomato purée (passata)
- 1 cup beef stock
- 1/4 cup fresh parsley, minced (plus more to garnish)
- 1 tbsp fresh thyme, chopped
- 1 or 2 bay leaves (small or large)
- 3/4 tsp salt
- 1/2 tsp granulated sugar
- 1/2 tsp ground cinnamon
- 1/4 tsp black pepper
For the vegetables:
- 2 cups vegetable or olive oil, for frying (or enough to submerge veggies in pan)
- 1.6 lb russet potatoes (about 2 large), peeled and sliced 1/4 inch thick
- 1 lb zucchini, sliced lengthwise into 1/3 inch wide strips
- 2 lb eggplant (about 4 small), sliced in rounds or long strips
- Extra parsley and grated pecorino romano (for layering and garnish)
- Salt and pepper, as needed
For the béchamel sauce:
- 4 oz unsalted butter
- 4 oz all-purpose flour
- 4 cups milk (room temperature)
- 1/2 tsp salt
- 1/2 small nutmeg, grated or 1/4 tsp ground nutmeg
- 1/4 tsp white pepper
- 1 cup pecorino romano cheese, freshly shredded
- 2 egg yolks
Step 1: Prepare the Beef Layer
- 1 tbsp olive oil
- 1 large yellow onion, finely chopped
- 2 garlic cloves, minced
- 1.6 lb ground beef (lean recommended)
- 2 tbsp tomato paste, heaping
- 1/2 cup dry red wine (or more beef broth as substitute)
- 1 cup tomato purée (passata)
- 1 cup beef stock
- 1/4 cup fresh parsley, minced (reserve some to garnish and layer)
- 1 tbsp fresh thyme, chopped
- 1 or 2 bay leaves (small or large)
- 3/4 tsp salt
- 1/2 tsp granulated sugar
- 1/2 tsp ground cinnamon
- 1/4 tsp black pepper
Heat 1 tablespoon of olive oil in a large pan over medium heat.
Add the finely chopped yellow onion and sauté until soft and golden.
Stir in the minced garlic and cook for about 1 minute until fragrant.
Add the ground beef and cook, breaking it up with a spoon, until fully browned.
Stir in the tomato paste and fry for a couple of minutes.
Deglaze the pan with the red wine, scraping up any browned bits.
Pour in the tomato purée (passata) and beef stock, then mix in the fresh parsley, chopped thyme, bay leaf, salt, granulated sugar, ground cinnamon, and black pepper.
Bring to a simmer, then reduce the heat and let it gently simmer for 30 minutes, stirring occasionally, until thickened.
Step 2: Prep the Vegetables
- 2 lb eggplant (about 4 small), sliced in rounds or long strips
- 1 lb zucchini, sliced lengthwise into 1/3 inch wide strips
- 1.6 lb russet potatoes (about 2 large), peeled and sliced 1/4 inch thick
- salt and pepper, as needed
Arrange a few sheets of paper towel or a clean tea towel on a flat surface.
Lay out the eggplant slices in a single layer and sprinkle both sides with a pinch of salt.
Layer two sheets of paper towel over the eggplant, then add the zucchini slices.
Add more paper towel, followed by the potato slices and another layer of paper towel on top.
Press down gently to soak up excess moisture from all the vegetables.
Let rest for at least 15 minutes.
Removing moisture is essential here—it helps the veggies fry up crispier and prevents sogginess during baking.
Step 3: Fry the Vegetable Layers
- 2 cups vegetable or olive oil, for frying (or enough to submerge veggies in pan)
- potato slices from Step 2
- zucchini slices from Step 2
- eggplant slices from Step 2
In a large, deep pan, heat enough vegetable or olive oil (about 2 cups or enough to submerge the veggies) to 150°C/300°F.
Carefully add the potato slices and fry on both sides until lightly golden and fork-tender.
Remove and drain on fresh paper towels.
Raise the oil temperature to 170°C/340°F and fry the zucchini slices until softened and lightly browned.
Finish by frying the eggplant slices in the same way.
After all the vegetables are cooked, let them drain on paper towels to remove as much excess oil as possible.
I often work with two pans to speed things up, and sometimes I bake one vegetable to save time and reduce oil.
Step 4: Prepare the Béchamel Sauce
- 4 oz unsalted butter
- 4 oz all-purpose flour
- 4 cups milk (room temperature)
- 1/2 tsp salt
- 1/2 small nutmeg, grated or 1/4 tsp ground nutmeg
- 1/4 tsp white pepper
- 1 cup pecorino romano cheese, freshly shredded
- 2 egg yolks
Melt the unsalted butter in a medium saucepan over medium heat.
Stir in the all-purpose flour and cook, stirring constantly, for about 2 minutes to make a roux.
Gradually whisk in the room temperature milk, ensuring no lumps form.
Continue to whisk until the sauce has thickened and can coat the back of a spoon.
Season with the salt, grated or ground nutmeg, and white pepper.
Remove from the heat and stir in the freshly shredded pecorino romano cheese until smooth.
Quickly whisk in the egg yolks until fully incorporated.
Take 1/2 cup of this béchamel sauce and stir it into the beef mixture from Step 1.
For an extra-silky sauce, I like to use room temperature milk and whisk vigorously to prevent lumps.
Step 5: Assemble the Moussaka
- fried potato slices from Step 3
- fried zucchini slices from Step 3
- fried eggplant slices from Step 3
- extra parsley and grated pecorino romano (for layering and garnish)
- salt and pepper, as needed
- beef mixture from Step 1 (including béchamel from Step 4)
- béchamel sauce from Step 4
Preheat your oven to 180°C/350°F.
In a large baking dish, arrange a layer of fried potato slices to cover the bottom, overlapping if needed.
Sprinkle generously with chopped parsley, grated pecorino romano, and a pinch of salt and pepper.
Next, add a layer of fried zucchini slices and repeat with parsley, pecorino, salt, and pepper.
Add half of the fried eggplant slices, again seasoning with salt and pepper.
Spread the beef mixture (now combined with some béchamel) evenly over the vegetables.
Add the remaining eggplant slices on top of the beef layer, then pour all the béchamel sauce over to cover the top smoothly.
Step 6: Bake and Serve the Moussaka
- extra pecorino romano (for garnish and topping)
Finish the moussaka with a final sprinkle of pecorino romano cheese.
Place the assembled dish in the oven and bake at 180°C/350°F for 35–45 minutes, or until the top is golden and lightly charred.
Let the moussaka rest for at least 15 minutes before slicing and serving—this step is crucial to help it hold its shape.
I find that the flavors also meld together even better if you let it sit a while.

Traditional Moussaka Recipe
Ingredients
For the meat filling:
- 1 tbsp olive oil
- 1 large yellow onion, finely chopped
- 2 garlic cloves, minced
- 1.6 lb ground beef (lean recommended)
- 2 tbsp tomato paste, heaping
- 1/2 cup dry red wine (or more beef broth as substitute)
- 1 cup tomato purée (passata)
- 1 cup beef stock
- 1/4 cup fresh parsley, minced (plus more to garnish)
- 1 tbsp fresh thyme, chopped
- 1 or 2 bay leaves (small or large)
- 3/4 tsp salt
- 1/2 tsp granulated sugar
- 1/2 tsp ground cinnamon
- 1/4 tsp black pepper
For the vegetables:
- 2 cups vegetable or olive oil, for frying (or enough to submerge veggies in pan)
- 1.6 lb russet potatoes (about 2 large), peeled and sliced 1/4 inch thick
- 1 lb zucchini, sliced lengthwise into 1/3 inch wide strips
- 2 lb eggplant (about 4 small), sliced in rounds or long strips
- extra parsley and grated pecorino romano (for layering and garnish)
- salt and pepper, as needed
For the béchamel sauce:
- 4 oz unsalted butter
- 4 oz all-purpose flour
- 4 cups milk (room temperature)
- 1/2 tsp salt
- 1/2 small nutmeg, grated or 1/4 tsp ground nutmeg
- 1/4 tsp white pepper
- 1 cup pecorino romano cheese, freshly shredded
- 2 egg yolks
Instructions
- Heat 1 tablespoon of olive oil in a large pan over medium heat. Add the finely chopped yellow onion and sauté until soft and golden. Stir in the minced garlic and cook for about 1 minute until fragrant. Add the ground beef and cook, breaking it up with a spoon, until fully browned. Stir in the tomato paste and fry for a couple of minutes. Deglaze the pan with the red wine, scraping up any browned bits. Pour in the tomato purée (passata) and beef stock, then mix in the fresh parsley, chopped thyme, bay leaf, salt, granulated sugar, ground cinnamon, and black pepper. Bring to a simmer, then reduce the heat and let it gently simmer for 30 minutes, stirring occasionally, until thickened.
- Arrange a few sheets of paper towel or a clean tea towel on a flat surface. Lay out the eggplant slices in a single layer and sprinkle both sides with a pinch of salt. Layer two sheets of paper towel over the eggplant, then add the zucchini slices. Add more paper towel, followed by the potato slices and another layer of paper towel on top. Press down gently to soak up excess moisture from all the vegetables. Let rest for at least 15 minutes. Removing moisture is essential here—it helps the veggies fry up crispier and prevents sogginess during baking.
- In a large, deep pan, heat enough vegetable or olive oil (about 2 cups or enough to submerge the veggies) to 150°C/300°F. Carefully add the potato slices and fry on both sides until lightly golden and fork-tender. Remove and drain on fresh paper towels. Raise the oil temperature to 170°C/340°F and fry the zucchini slices until softened and lightly browned. Finish by frying the eggplant slices in the same way. After all the vegetables are cooked, let them drain on paper towels to remove as much excess oil as possible. I often work with two pans to speed things up, and sometimes I bake one vegetable to save time and reduce oil.
- Melt the unsalted butter in a medium saucepan over medium heat. Stir in the all-purpose flour and cook, stirring constantly, for about 2 minutes to make a roux. Gradually whisk in the room temperature milk, ensuring no lumps form. Continue to whisk until the sauce has thickened and can coat the back of a spoon. Season with the salt, grated or ground nutmeg, and white pepper. Remove from the heat and stir in the freshly shredded pecorino romano cheese until smooth. Quickly whisk in the egg yolks until fully incorporated. Take 1/2 cup of this béchamel sauce and stir it into the beef mixture from Step 1. For an extra-silky sauce, I like to use room temperature milk and whisk vigorously to prevent lumps.
- Preheat your oven to 180°C/350°F. In a large baking dish, arrange a layer of fried potato slices to cover the bottom, overlapping if needed. Sprinkle generously with chopped parsley, grated pecorino romano, and a pinch of salt and pepper. Next, add a layer of fried zucchini slices and repeat with parsley, pecorino, salt, and pepper. Add half of the fried eggplant slices, again seasoning with salt and pepper. Spread the beef mixture (now combined with some béchamel) evenly over the vegetables. Add the remaining eggplant slices on top of the beef layer, then pour all the béchamel sauce over to cover the top smoothly.
- Finish the moussaka with a final sprinkle of pecorino romano cheese. Place the assembled dish in the oven and bake at 180°C/350°F for 35–45 minutes, or until the top is golden and lightly charred. Let the moussaka rest for at least 15 minutes before slicing and serving—this step is crucial to help it hold its shape. I find that the flavors also meld together even better if you let it sit a while.