Push the flowers and candles aside because this Vegan Moussaka is a centerpiece-worthy recipe that’s guaranteed to wow everyone in your life.
It’s an impressive comfort food classic from Greece, made with layers of roasted potatoes and eggplant, a spiced vegan meat sauce, and a creamy vegan bechamel, all baked in the oven into a creamy casserole. Trust me when I say it’s outrageously good.
This vegan version is just as indulgent as the meat-and-dairy heavy classic but won’t weigh you down.
If you’re used to serving an extravagant Vegan Lasagna for special occasions and holidays, consider swapping it for this vegan Greek moussaka instead!
Table of Contents
1. What is moussaka?
2. Why this recipe works
3. Ingredient notes and substitutes
4. Step-by-step instructions
5. Tips for making this recipe
6. Frequently Asked Questions
7. Recipe card with notes
What is moussaka?
Moussaka is a popular and indulgent Greek casserole. Some folks refer to it as a Greek lasagna, but with eggplant instead of pasta. It’s one of the most popular dishes from Greece, and a staple on most Greek restaurant menus.
The first time I tried it was at Pylos, a family-owned Greek restaurant and my favorite NYC spot before I became vegan. I remember thinking, “so this is what heaven tastes like”. We ordered that dish every time we visited.
A traditional moussaka has three main components:
(1) Layers of fried eggplant and, sometimes, potatoes;
(2) A rich meat and tomato sauce with hints of spice:
(3) A thick and creamy bechamel sauce on top.
Why this recipe works
Incredible comfort food without the meat or dairy.
One bite of this vegan moussaka and you’ll be transported to heaven. Layers of meltingly tender eggplant and hearty potatoes are layered with a spiced tomato “meat” sauce, all topped with a thick layer of a creamy, savory bechamel sauce that thickens during baking into a cheesy crust.
Perfectly cooked eggplant and potatoes.
Thanks to a couple techniques and the right oven temperature, you end up with soft, almost jammy eggplant that melts in your mouth and perfectly tender, browned potatoes.
While many traditional Greek recipes shallow or deep fry the eggplant and potatoes, I found that roasting them with olive oil in the oven worked fantastic.
You can roast potatoes and eggplant at the same time (they both roast for 30 minutes); in contrast, you have to fry them separately, each in two batches, so it takes more time. Plus, moussaka is already rich, so deep frying weighed it down.
A seriously meaty sauce.
The meat sauce in moussaka is similar to a bolognese or a lasagna meat sauce. Adding warm spices like cinnamon, cloves and thyme, however, gives this sauce its defining Greek charm and flavor.
Here, I use vegan ground beef + mushrooms. The vegan meat bringing the intense savoriness, while shrooms enhance those flavors and bulk up the sauce in a wholesome, inexpensive way. While optional, porcini mushroom powder takes the umami factor to the next level (affiliate link).
Note: If you want to make a more wholesome “meat sauce,” check out the second recipe card for my homemade alternative.
And this sauce is versatile! Use it to make a comforting bowl of meaty vegan pasta; or stuff the meat sauce into jumbo shells, pour the bechamel sauce on top, and bake in the oven for an epic baked pasta dish.
A creamy, thick, and savory bechamel sauce.
A moussaka sauce more closely resembles French mornay sauce, a bechamel sauce that’s enriched with Gruyere or Parmesan cheese and egg. It’s like a thick custard, which sets as a top layer on the moussaka after baking.
Making vegan bechamel without all this dairy-based richness was no easy feat. In our tests, a vegan bechamel made with standard plant milk wasn’t rich or thick enough, while the common substitute of cashew cream wasn’t flavorful enough.
So this recipe uses a hybrid. The sauce starts off like a classic bechamel with a roux: vegan butter and flour. Instead of pouring in plant milk though, I pour in a heavily seasoned savory homemade cashew cream.
The end result is perfect: creamy and thick with tons of rich, savory flavor.
Ingredient notes
Eggplant. It isn’t moussaka without the eggplant! I know eggplant isn’t the most loved vegetable (unless, perhaps, you’ve tried my smoky Baingan Bharta recipe) but even the eggplant-haters are sure to love it in this dish.
My partner Max, who practically has “I hate eggplant” tattooed on his bum, can’t get enough of this moussaka.
The eggplant is thinly sliced and roasted, then baked again inside of the moussaka. It becomes deliciously buttery and tender, practically melting in your mouth. There’s nothing dry or rubbery about this eggplant!
Substitute: Feel free to use sliced zucchini or an extra layer of potatoes if you still don’t think this dish will convert you into an eggplant lover.
Potatoes. Some traditional moussaka recipes contain a layer of potatoes, some don’t. I tested both, and the version with potatoes always came out on top because the potatoes give the moussaka more structure and heft, and make it easier to slice through.
Pro tip: Use a starchy potato, like Yukon Gold, Russet, or Idaho.
Vegan ground meat. While whole foods are usually my go-to, I made an exception here and used storebought vegan ground meat by Impossible Burger. It cuts the prep time in a three-layer dish quite a bit, so I think it’s worth it.
Substitute: Make a more wholesome alternative at home with lentils, walnuts, and mushrooms. I’ve included a second recipe for “lentil meat sauce” in the recipe card below.
Canned crushed tomatoes. Try to use the best-quality canned tomatoes you can find and afford. They’ll help the tomato-rich meat sauce taste its best.
Red wine. This enhances the savoriness of the meat sauce and gives it a jammier texture. Barnivore is a helpful resource when you’re searching for a vegan-friendly red wine brand.
Substitute: Skip the wine and deglaze the pan with veggie broth + ½ tablespoon red wine vinegar.
Raw cashews. Soaked, rinsed, and blended cashews turn into the creamy base we need for the vegan bechamel sauce. Either quick soak them for 15 minutes by boiling them on the stove, or leave them to soak overnight.
Nut-free substitute: Make a more traditional bechamel sauce using the Notes in the recipe card.
Vegan butter. One of the three ingredients in bechamel sauce is butter, so I use a bit in the sauce here.
Substitute: Extra virgin olive oil works just as well.
Nutritional yeast. A generous amount of nutritional yeast lends the umami, subtly cheesy flavors that are normally found in a mornay sauce.
Step-by-step instructions
Layer #1: Prep the eggplant and potatoes
Slice the eggplant crosswise in half, then slice each half lengthwise into fairly thin slices. Transfer them to a colander and sprinkle salt on top. Rest for 30 minutes.
Peel and slice the potatoes slightly thicker than the eggplant. Toss with oil, oregano, salt and pepper. Transfer to a second sheet pan in a single layer, without overlap.
Roast the eggplant and potatoes. Place both pans in the oven. Roast 30 minutes, or until both are tender and lightly browned.
Layer #2: Make the vegan meat sauce.
Add the onion to a hot sauté pan with oil. Cook until soft and golden, then stir in the garlic, cinnamon stick, thyme, cloves, chile flakes, and tomato paste for 2 minutes.
Add the vegan ground meat (or homemade meat alternative) and cook for a few minutes until it’s a bit browned. Add in the mushrooms for 2 to 4 minutes.
Deglaze with the red wine and scrape up the browned bits on the bottom. Cook for a few minutes, or until the smell of alcohol burns off.
Pour in the tomatoes, salt, pepper, bay leaf, and mushroom powder into the pan. Bring it up to a boil, then reduce the heat to a simmer. Cook for 10 minutes until thickened.
Discard the bay leaf and cinnamon. Stir in the basil and add a pinch or two of sugar to balance any acidity.
Layer #3: Make the vegan bechamel sauce.
Blend the soaked and rinsed cashews with the water, nutmeg, garlic powder, nutritional yeast, salt, and pepper. You’ll know it’s ready when the sauce is smooth, creamy, and has the same texture as plant milk.
Now add the butter to a saucepan. Once melted, whisk in the flour and whisk constantly until a paste forms (the roux).
Slowly pour in the cashew cream in stages while continuously whisking to prevent clumps.
The finished texture should be very thick and creamy. Once it reaches that point, take the pot off the heat.
Pro tip: If you’re making the bechamel sauce ahead of time, transfer it to a container or bowl so it doesn’t harden or overthicken.
Assemble the Moussaka.
- Line the bottom of a lightly greased baking dish with the roasted potato slices.
- Top with half of the meat sauce.
- Now add the eggplant slices on top, then the rest of the meat sauce.
- Pour the bechamel on top and spread it to the edges. Sprinkle panko breadcrumbs over the bechamel. Finish with a drizzle of olive oil and a pinch of salt.
Bake the moussaka. Place the dish in a 400ºF/204ºC oven and bake uncovered until the top is a bit browned in spots. You could also pop it under the broiler for a minute to achieve a browner surface.
Let the moussaka cool for at least 30 minutes before slicing (or even a few hours). Serve each slice with chopped basil on top and enjoy!
Tips for making the best vegan moussaka
Pre-salt the eggplant. We A/B tested the eggplant: Batch A of the eggplant was salted and rested for 30 minutes; Batch B was not pre-salted.
Batch A was way better: it had a creamy and tender texture and great flavor, whereas Batch B had a mushy yet rubbery texture and a bitter flavor.
Eggplant needs oil. When we tried using just a little oil on the eggplant, it came out dry and rubbery. The entire dish was unpleasant to eat. So don’t skimp on the oil when it comes to the eggplant (it’s a sponge and it needs to be well coated).
Let the moussaka rest! This is so important. I know it will be tempting to devour it asap, but leaving the freshly baked moussaka to rest for at least 30 minutes, ideally an hour or two, will help it set, develop structure, and taste better.
Make sure you like the meat! If you’re using store-bought vegan meat in the sauce, please use a brand you know you already like. For instance, while I love Beyond Meat sausages, I don’t like the Beyond Burger meat, and when we tested this recipe with it, it tasted, well, funky.
Note: We prefer Impossible Burger in this recipe. Each time we’ve made it, it’s been loved by vegans and non-vegans alike.
Make ahead to streamline. While there are several steps to making any moussaka, each layer is easy to make. Plus, you can make some or all the layers ahead of time! Check out the FAQ section below for tips on making ahead.
Frequently Asked Questions
Can I make vegan moussaka ahead of time?
Yes, you have a few options:
1) Assemble, then bake. Assemble the layers but don’t bake. Cover the dish and store in the fridge for a day or two. On the day of serving, let it come down to room temperature on the kitchen counter for an hour or so, then bake as instructed.
2) Make each component ahead of time, then assemble and bake. Store the roasted eggplant, roasted potatoes, meat sauce, and bechamel in separate containers in the fridge for up to 2 days. Assemble the day of, then bake.
3) Bake and reheat. Assemble and bake the moussaka, then cool and store covered in the fridge for 1 or 2 days. Reheat in a 350ºF/175ºC oven on the day of serving for 30 minutes or until heated through.
How long do leftovers last? Can I freeze them?
They should last for about 5 days, covered in the fridge. To freeze, store leftovers in single-serve portions (in containers, or wrapped tightly in parchment paper, then foil) so they defrost quickly.
Can I make this moussaka gluten-free? Can I make it nut-free?
GF: Use all-purpose gluten-free flour in the bechamel and skip the optional panko breadcrumb topping (or us gluten-free panko).
Nut-free: You’ll need to omit the cashew cream in the bechamel and replace it with canned “lite” coconut milk. Read the Notes in the recipe card below for full details.
What do you serve with moussaka?
Moussaka on its own is a fairly complete meal, but if you need a starter or are serving it to a crowd, a simple green salad or roasted carrots or cauliflower is a nice way to start.
For a full Greek feast, serve these Vegan Zucchini Fritters as an appetizer and add some Greek-Style Vegan Feta to your salad.
If you love this Vegan Moussaka recipe as much as we do, please be sure to leave a rating and review below 🙂 It’s always much appreciated!
You’ll fall deep into comfort food heaven after tasting this epic Vegan Moussaka. This Greek layered casserole is delightfully indulgent, featuring layers of roasted potatoes and eggplant, a rich “meat” sauce, and an incredible vegan bechamel, all baked to creamy perfection.
Eggplant and Potatoes
- 1 ½ pounds (680g) eggplant (medium-to-large sized works best)
- Kosher salt
- 2 pounds (900g) Yukon gold potatoes
- 6 tablespoons olive oil, divided
- 2 ½ teaspoons dried oregano, divided
- 3 garlic cloves, grated or minced
- Freshly cracked black pepper
Meat Sauce
- 2 tablespoons olive oil
- 1 medium yellow onion, chopped
- 4 garlic cloves, grated, minced, or finely chopped
- 1 cinnamon stick*
- 1 tablespoon fresh thyme leaves* (no need to chop, small bunches are fine too)
- 1 pinch of ground cloves
- ½ teaspoon red pepper flakes (optional; omit for mild; use 1 tsp for a kick)
- 3 tablespoons tomato paste
- 12 to 16 ounces (340 to 450g) vegan ground meat (we like Impossible Burger)**
- 8 ounces (227g) cremini mushrooms (or mushrooms of choice), finely chopped or pulsed in food processor
- ⅓ cup (80 mL) dry red wine (see notes for substitute)***
- 1 28-ounce (800g) can of crushed tomatoes
- ½ teaspoon kosher salt
- 1 bay leaf
- ½ teaspoon porcini mushroom powder (optional for extra savory oomph)
- 1 large handful of fresh basil or parsley, chopped
Bechamel
- 1 cup (140g) raw cashews, soaked overnight or quick soaked*
- 1 ¾ cups (420 mL) water
- ½ teaspoon freshly grated nutmeg
- ½ teaspoon garlic powder
- ½ cup (40g) nutritional yeast
- ¾ teaspoon kosher salt, more to taste
- 4 tablespoons (½ stick / 56g) vegan butter (or extra virgin olive oil)
- ⅓ cup (42g) all-purpose flour**
Assembly
- ½ cup (38g) panko bread crumbs* (optional for a crispy top)
- Extra virgin olive oil for drizzling
- Flaky sea salt
- 1 large handful of fresh basil or parsley, chopped (optional)
Eggplant And Potatoes
Slice off the stem of the eggplant. Slice the eggplant crosswise in half. Now, slice each half thinly lengthwise, about ¼ inch thick (.6 cm).*
Transfer eggplant slices to a large colander and sprinkle with some salt. Toss to coat. Allow to rest for 30 minutes. Pat the eggplant dry to remove excess moisture and salt. Transfer to a large bowl.
Preheat the oven to 425ºF/218ºC and arrange one oven rack in the bottom, one in the middle. Line two rimmed sheet pans with parchment paper for easy cleanup and minimal sticking (naked sheet pans are fine but only if well worn).
Peel the potatoes and slice slightly thicker than the eggplant (1/3” or .8cm thick). Transfer to a sheet pan. Toss with 2 tablespoons of the oil, 1 ½ teaspoons of oregano, and season with salt and pepper. Spread the potatoes out on the pan without overlapping on top of each other.
In a large bowl, combine the eggplant with the grated garlic, remaining 1 teaspoon of oregano, and a generous amount of pepper, and toss well. Add 2 tablespoons of the olive oil, and toss to coat the eggplant. Add the remaining 2 tablespoons of oil and toss once again, ensuring all the eggplant is coated well.**
Transfer the eggplant to the other sheet pan (it’s okay to slightly overlap and pile on top of each other).
Roast both potatoes and eggplant in the oven for 30 minutes, until the eggplant is tender and lightly browned and the potatoes are fork tender and lightly browned on the bottoms.
Meat Sauce
Heat the 2 tbsp oil in a deep saute pan over medium-high heat. Once hot, add the onions and season with a pinch of salt. Cook until softened and golden, 8 to 10 minutes. Deglaze the pan as needed with a few spoons of water to prevent burning.
Add garlic, cinnamon stick, thyme, cloves, chile flakes, and tomato paste, and cook for about 2 minutes, stirring frequently.
Add in the ground meat and break up with a wooden spoon. Cook until it’s a bit browned, 2 to 3 minutes. Then add the mushrooms and cook for 2 to 4 minutes.
Pour in the wine and deglaze the pan, scraping up any browned bits. Cook until the smell of alcohol burns off, about 3 to 5 minutes.
Pour in the tomatoes, ½ teaspoon kosher salt, several cracks of pepper, bay leaf, and mushroom powder, if using. Bring to a rapid bubble, then reduce the heat to a simmer. Simmer until the sauce thickens and the liquid has evaporated, 8 to 10 minutes, or until it looks like a thick meat sauce the liquid has evaporated.
Take off the heat, and remove bay leaf and cinnamon. Stir in basil. Taste, adding a pinch of sugar if needed to balance the acidity. Season to taste with salt and pepper.
Bechamel
If you haven’t soaked the cashews overnight, add them to a saucepan, cover with water and bring to a boil. Boil for 15 minutes, then drain and rinse.
Add the soaked and rinsed cashews to a high-powered blender with the water, nutmeg, garlic powder, nutritional yeast, ¾ teaspoon kosher salt, and several cracks of pepper.
Blend on the highest speed for several minutes, until smooth and creamy and all cashew bits have been pulverized, scraping down the sides as you go. The texture should be like a plant-based milk, not too thick.
Heat the butter in a small or medium saucepan over medium heat until foaming. Add the flour and whisk constantly for 1 to 2 minutes until a paste forms.
Gradually pour in the cashew cream in stages, whisking after each addition to prevent clumping. The texture should end up very thick and creamy.
Take off the heat. Unless using immediately, transfer to a bowl to prevent it from further thickening or hardening. Season to taste with more salt and pepper, as needed.***
Assembly
Heat oven to 400ºF/204ºC.
Lightly grease the bottom and sides of a 9×13” (23×33 cm) baking dish with olive oil. Add the roasted potato slices on the bottom of the pan. Top with half of the meat sauce. Add the eggplant slices, and then the rest of the meat sauce. Pour the bechamel sauce on top, spreading it to the edges.
Sprinkle the panko on top of the surface, drizzle with a bit of olive oil, and sprinkle a pinch of flaky salt on top.
Bake the moussaka until the bechamel is lightly browned in spots, about 35 minutes. If a browner surface is desired, pop underneath the broiler for a minute (but keep a watchful eye, the panko will burn quickly).
Allow to cool for at least 30 minutes before slicing, ideally for an hour or two (it sets up during this time and the flavors improve). Sprinkle with fresh chopped basil if desired.
For instructions on making ahead and reheating, visit the FAQ section in the post.
Eggplant and Potatoes
* I like slicing the eggplant this way for slightly larger surface area, but you can also just slice it into rounds.
** If any parts of the eggplant are dry, drizzle or brush with a tad more oil (eggplant without oil = dry and rubbery).
Meat Sauce
* While whole spices and fresh herbs will taste best, you can sub a cinnamon stick with a heaping ¼ tsp ground cinnamon and fresh thyme with 1 tsp dried thyme.
** If you want a homemade “meat” alternative, try the lentil meat sauce in the second recipe card. For store-bought vegan meat, we loved this with Impossible Burger and with Beyond Meat sausage. We did NOT like it with Beyond Burger, which has an artificial taste IMO.
*** Don’t consume alcohol? Skip the wine and deglaze with veggie broth + ½ tablespoon red wine vinegar.
Bechamel
* If allergic to cashews, make a roux using 1 stick (112g) vegan butter and ⅔ cup (83g) all-purpose flour. Instead of the cashew cream, pour in 2 (13.5-ounce/400 mL) cans of “lite” coconut milk (we tried this with soy and oat milk and it tasted slightly sweet). After the sauce thickens, stir in the nutmeg, nutritional yeast, garlic powder, salt, pepper).
** GF? Use all-purpose gluten-free flour or half the amount of cornstarch (2 tablespoons + 2 teaspoons).
*** If making the sauce ahead of time, thin the bechamel out slightly with some water. Add a few spoons, whisk, and add more as needed until thick but still somewhat pourable (about ⅓ cup (80 mL) water).
Assembly
* Panko is not traditional but adds a nice crunchy top. If gluten-free, skip it or use gluten-free panko.
Calories: 540kcal | Carbohydrates: 47g | Protein: 17g | Fat: 33g | Saturated Fat: 7g | Polyunsaturated Fat: 5g | Monounsaturated Fat: 17g | Trans Fat: 1g | Sodium: 639mg | Potassium: 1316mg | Fiber: 9g | Sugar: 7g | Vitamin A: 213IU | Vitamin C: 29mg | Calcium: 134mg | Iron: 5mg
A plant-based “meat” sauce made with whole food ingredients like lentils, walnuts, and mushrooms. Use it in lieu of the more traditional meat sauce in the vegan moussaka, as well as in shepherd’s pies, lasagnas, sloppy joes, or over pasta.
- 4 ounces (113g) dried green or brown lentils (or 8 ounces/227g pre-cooked lentils)
- 4 ounces (113g or 1 cup) walnuts
- 8 ounces (227g) cremini mushrooms, very roughly chopped
- 2 tablespoons olive oil
- 1 medium yellow onion, chopped
- 4 garlic cloves, grated, minced, or finely chopped
- 1 cinnamon stick*
- 1 tablespoon fresh thyme leaves* (no need to chop, small bunches are fine too)
- 1 pinch of ground cloves
- ½ teaspoon red pepper flakes (optional; omit for mild; use 1 tsp for a kick)
- 3 tablespoons tomato paste
- ⅓ cup (80 mL) dry red wine (see notes for substitute)**
- 1 28-ounce (800g) can of crushed tomatoes
- 1 ½ teaspoons kosher salt, plus more as needed
- Freshly cracked black pepper
- 1 bay leaf
- 1 teaspoon porcini mushroom powder (optional but highly recommended***)
- 1 large handful of fresh basil or parsley, chopped
Cook the lentils. Bring some water to a boil in a saucepan and lightly salt the water. Once boiling, add the lentils. Reduce the heat to a simmer and cook the lentils for just 7 to 10 minutes.
Note: The point is to slightly undercook the lentils: they should be mostly cooked but not fully cooked with a distinct bite, as they’ll get cooked later. Drain the lentils thoroughly.
Measure out 8 ounces or 227g (it should be just about all the lentils).
Meanwhile, toast the walnuts. Add to a dry skillet over medium-low heat and toast for 4 to 5 minutes until they smell toasty and are darker in color. Or toast in a 350ºF/175ºC oven on a sheet pan for 8 minutes.
Add the toasted walnuts to a food processor. Blend briefly until you have fine crumbs, but don’t over-process, or it will start to turn into walnut butter.
Add chopped mushrooms and blend a few times, followed by a few pulses until mushrooms are very finely chopped.
Add the cooked lentils to the food processor and pulse again again until the lentils are just partially blended. Set this mixture aside.
Heat the oil in a deep saute pan over medium-high heat. Once hot, add the onion and season with a pinch of salt. Cook until softened and golden, 8 to 10 minutes.
Add the garlic, cinnamon stick, thyme, cloves, chile flakes, and tomato paste, and cook for a few minutes.
Add in the lentil “meat” and break up with a wooden spoon. Cook for a few minutes, until it gets some browning and a bit crispy, about 5 minutes.
Pour in the wine and deglaze the pan, scraping up any browned bits. Cook until the smell of alcohol burns off, about 3 to 5 minutes.
Pour in the tomatoes, 1 ½ teaspoons kosher salt, several cracks of pepper, bay leaf, and mushroom powder. Bring to a boil, then reduce the heat to a simmer. Simmer until the sauce thickens and the liquid has evaporated, 8 to 10 minutes, or until it looks like a thick meat sauce the liquid has evaporated.
Take off the heat, and remove the bay leaf and cinnamon. Stir in the basil. Taste, adding a pinch or two of sugar if needed to balance the acidity of the tomatoes. Season to taste with salt and pepper.
* While whole spices and fresh herbs will taste best, you can sub a cinnamon stick with a heaping ¼ tsp ground cinnamon and fresh thyme with 1 tsp dried thyme.
** Don’t consume alcohol? Skip the wine and deglaze with veggie broth + ½ tablespoon red wine vinegar.
*** The porcini mushroom powder is a great source of umami and adds a lot of savory oomph to this “meat” sauce.