Every zucchini lasagna I made for the first three years was a sad, watery mess. Not because I didn’t salt the zucchini — I did. I was missing the roast. Once I started roasting those strips before they ever touched the baking dish, everything changed. This version is the one my neighbor Cheryl asks for every August when her garden overflows. It’s hearty enough that no one misses the extra noodles, and it actually slices cleanly instead of collapsing into a puddle on your plate.
The short version: A rich, meaty lasagna where roasted zucchini replaces half the noodles — it holds up, it feeds a crowd, and my kids ask for it by name.
I’ve made this close to thirty times now, tweaking the roast time on the zucchini, adjusting the sauce so it’s thick enough to hold its own, and finding the exact cheese ratio that makes everyone happy. This version is the one I trust.
- Serves: 8-10 as a main dish
- Hands-On Time: 45 min | Total Time: 1 hour 45 min
- Difficulty: Medium — a few steps, but every single one is simple
- Cost per serving: ~$4.50
- Calories: ~450 per serving
- Dietary Notes: Can be made gluten-free with GF noodles
(Photo above: A close-up, overhead shot of a slice of lasagna on a white ceramic plate. You can see the distinct layers of tender roasted zucchini, rich meat sauce, and creamy ricotta. The cheese on top is deeply golden and bubbling at the edges. A fork rests against the slice, a small piece of basil on top for color.)
The One Step That Keeps Zucchini Lasagna From Turning Into Soup

Most people salt zucchini and let it sit. That does draw out some water, but it’s not enough. The zucchini still releases moisture as it bakes, and you end up with that watery layer between the noodles. Roasting the salted zucchini strips at 400°F for just 10 minutes evaporates the surface moisture and concentrates the flavor. It gives you zucchini that’s tender, not mushy, and it acts like a noodle — absorbing some of the sauce instead of watering it down.
I learned this the hard way after three soggy pans. My friend Katie, who’s a caterer, watched me one afternoon and said, “Just roast it first.” That single sentence changed everything. Now I don’t skip it, even when I’m in a hurry. It’s the difference between a lasagna that slumps and one that stands tall.
This isn’t some delicate, health-food version of lasagna. It’s a real, hearty dinner that happens to have a vegetable playing a starring role. My kids don’t notice the slightly higher veggie-to-noodle ratio. All they know is it’s lasagna night.
What Goes In (And One Thing You Absolutely Can’t Skip)
- 1 ½ pounds zucchini (about 3 medium): The star of the show. Slice these lengthwise into ¼-inch strips. Don’t bother peeling them — the skin helps the strips hold together during roasting and gives them a better texture.
- Kosher salt: For drawing out the moisture. Use a generous sprinkle on both sides. This is non-negotiable.
- 1 tablespoon olive oil: A light toss before roasting helps the zucchini brown instead of steam.
- 1 pound ground beef (80/20): I use grass-fed from the farmer’s market when I can. The fat matters here for flavor.
- ½ pound ground pork (or Italian sausage, casings removed): The pork adds a sweetness that makes the sauce feel luxurious. My kids don’t know what’s in it, they just know it’s good.
- 1 yellow onion, diced: The aromatic foundation.
- 4 cloves garlic, minced: Because it’s lasagna.
- 1 (28-ounce) can crushed tomatoes: I prefer San Marzano for the natural sweetness.
- 2 tablespoons tomato paste: Deepens the tomato flavor. Don’t skip it — it’s the secret to a sauce that doesn’t taste flat.
- 1 teaspoon dried oregano: A classic Italian flavor.
- ½ teaspoon red pepper flakes (optional): I add this to the adult version. The kids get theirs without.
- 15 ounces whole milk ricotta cheese: The creamy layer that ties everything together.
- 1 large egg: Helps the ricotta set up so it doesn’t run out when you slice the lasagna.
- ½ cup grated Parmesan cheese: Salty, nutty, essential.
- 2 cups shredded low-moisture mozzarella cheese: For that melty, golden top. Low-moisture is key — fresh mozzarella adds too much water.
- ½ cup chopped fresh basil (optional, but don’t skip it): A pop of freshness at the end that wakes up the whole dish.
- 9 lasagna noodles: I use the no-boil kind because they work beautifully here. If you use regular, cook them 2 minutes less than al dente so they don’t get mushy when baked.
The Setup (It’s Minimal, I Promise)
- Baking sheet: For roasting the zucchini strips. A rimmed sheet keeps things tidy.
- Large skillet or Dutch oven: For the meat sauce. Heavy-bottomed is best for even browning.
- 9×13-inch baking dish: The standard size that serves 8-10.
- Paper towels: For drying the salted zucchini before roasting. This step matters more than you think.
- Cutting board and sharp knife: For the vegetables.
(If you don’t have a 9×13, you can use two 8×8 dishes. Just adjust the layers and bake time by about 10 minutes.)
Building the Lasagna: My Exact Process
Read through the steps once before you start. It’s a process, not a rush job. Preheat your oven to 400°F for the zucchini, then lower it to 375°F for the final bake.
Prep and Roast the Zucchini:
- Slice and salt: Trim the ends off the zucchini and slice lengthwise into ¼-inch strips. Lay them on a paper-towel-lined baking sheet and sprinkle both sides generously with kosher salt. Let them sit for 15 minutes. You’ll see beads of moisture form on the surface.
(📸 Photo tip: This is a great shot — the glistening beads of water on the green skin show you’re on the right track.) - Dry and roast: Pat the strips completely dry with another layer of paper towels. Transfer them to a clean, dry baking sheet. Toss with 1 tablespoon of olive oil and spread in a single layer. Roast at 400°F for 10 minutes, flipping once halfway through. They should look dry and slightly softened, but not browned. Set them aside to cool.
(📸 Photo tip: The zucchini right after roasting — dull, slightly wrinkly, no standing water in the pan. This is the goal.)
Make the Sauce:
- Brown the meat: In a large skillet or Dutch oven over medium-high heat, combine the ground beef and pork. Cook, breaking it up with a wooden spoon, until well browned, about 8 minutes. I don’t drain all the fat — just enough so there’s about a tablespoon left. That’s where the flavor is.
- Aromatics: Add the diced onion and cook until softened, about 4 minutes. Add the garlic, oregano, and red pepper flakes (if using). Cook for 30 seconds until you can smell it.
- Simmer the sauce: Stir in the tomato paste and cook for 1 minute, stirring constantly. Pour in the crushed tomatoes. Season with a pinch of salt and pepper. Let the sauce simmer on low heat for 15-20 minutes, stirring once or twice. It should be thick, not watery — it should hold its shape on a spoon.
Prepare the Cheese Mixture & Noodles:
- Mix the ricotta: In a small bowl, combine the ricotta, egg, ¼ cup of the Parmesan, and half the chopped basil. Stir together until smooth. This is your creamy layer.
- Soften the noodles: If using no-boil noodles, soak them in hot water for 5 minutes while you assemble. This ensures they hydrate perfectly in the oven. (Regular boiled noodles go directly in.)
Assemble the Lasagna:
- Layer 1 (bottom): Spread a thin layer of meat sauce on the bottom of your 9×13 dish. This prevents the noodles from sticking. Top with 3 lasagna noodles.
- Layer 2 (zucchini & ricotta): Lay down ⅓ of the roasted zucchini strips in a single layer. Dollop with ½ of the ricotta mixture and spread it gently. Top with ⅓ of the remaining meat sauce and a sprinkle of mozzarella.
- Layer 3 (repeat): Repeat the layers: 3 noodles, ⅓ of the zucchini, remaining ricotta mixture, ⅓ of the meat sauce, mozzarella.
- Layer 4 (top): Final layer of 3 noodles, remaining zucchini, remaining meat sauce. End with a generous sprinkle of mozzarella and the remaining ¼ cup of Parmesan. This is the crust. Don’t skimp on it.
Bake and Rest:
- Bake: Place the lasagna on a baking sheet (to catch any drips). Bake at 375°F for 40 minutes, until the sauce is bubbling at the edges and the cheese on top is deeply golden brown.
- Rest (this is the hardest part): Let the lasagna rest for at least 20-30 minutes before slicing. I know. The texture you’re waiting for doesn’t exist yet. The starches are setting, the layers are fusing, and the moisture is distributing. If you cut into it hot, you get a puddle. If you wait, you get perfect slices.
Make-Ahead Notes (Because Lasagna Is Always Better the Next Day)
This is one of those rare recipes that genuinely improves overnight. The flavors settle, the textures relax, and it slices like a dream. I make a double batch on Sundays — we eat one that night, and the other one saves us on a busy Tuesday.
- Fridge: Fully assembled, unbaked lasagna can be covered tightly in plastic wrap and stored in the fridge for up to 2 days before baking. Add 15 minutes to the bake time if starting from cold.
- Freezer: Yes! Bake it, cool it completely, then wrap it tightly in plastic and foil. Freeze for up to 3 months. Thaw overnight in the fridge before reheating.
- Reheat: Single slices in the microwave work in a pinch, but a 350°F oven for 15 minutes will get you a crispy top and a hot center. My kids eat the leftovers cold for lunch and claim it’s better that way.
What I’ve Learned After Making This Every Summer for a Decade
- Don’t crowd the zucchini on the baking sheet: If they overlap, they steam instead of roast. You end up with limp, wet slices. Use two sheets if you have to.
- The sauce needs to be thick: If your sauce is thin, it will make the lasagna watery. Let it simmer uncovered until it’s the consistency of a good chili. It should hold its shape on a spoon.
- Resting isn’t optional, but it forgives a lot: Even if you’re impatient and cut it at 15 minutes, it’ll still taste good — just be prepared for it to slump a little. The 30-minute rest is the difference between “homemade lasagna” and “my grandmother’s lasagna.”
- Low-moisture mozzarella is your friend: Fresh mozzarella is delicious but adds too much water. The low-moisture, whole-milk kind melts beautifully and keeps the layers intact.
How to Make It Your Own (I Have a Favorite)
- Vegetarian version: Replace the meat with a mix of sautéed mushrooms, more zucchini, and a cup of cooked lentils or your favorite plant-based crumbles. My sister makes it this way and her husband, a committed carnivore, didn’t notice the first time.
- Gluten-free version: Use gluten-free lasagna noodles. I’ve done it with the Tinkyada brand and it works perfectly. Don’t boil them — just add a little extra sauce so they hydrate.
- Kid-friendly tweak: My kids prefer a simpler sauce — just crushed tomatoes and a pinch of sugar. I make theirs without red pepper flakes and with a little more mozzarella on top.
- Dairy-free adaptation: Use a plant-based ricotta (I like Kite Hill) and your favorite dairy-free mozzarella shreds. The rest of the recipe is the same, and it still holds up beautifully.
Questions People Always Ask About This Lasagna
Q: Why did my zucchini lasagna turn out watery?
A: Ugh, I’ve been there. The most common reason is not roasting the zucchini long enough. They need to look dry and slightly shriveled before they go in the lasagna. The second culprit is cutting into it too soon. I promise, the 20-minute rest is the best thing you can do for the texture.
Q: Can I make this with all zucchini and no noodles?
A: You can try! But I’ve found that a mix of noodles and zucchini gives you the most satisfying texture. The noodles provide structure, and the zucchini adds moisture without making it soggy. If you go no-noodle, be prepared for a slightly softer lasagna that’s harder to slice cleanly.
Q: How long does this last? Can I freeze it?
A: Absolutely. It’s one of the best freezer meals I know. Bake it, cool it completely, wrap it tightly, and freeze for up to 3 months. To reheat, thaw overnight in the fridge and bake at 350°F until hot throughout. It’ll taste just as good as the day you made it.
Q: What do you serve with this lasagna?
A: I always serve it with a simple green salad with lemon vinaigrette to cut through the richness. We also do crusty bread with butter — my kids use it to mop up the extra sauce from their plates. On Sundays, I’ll open a bottle of Chianti.
More Recipes That Get the Same Reaction at Our Table
If this lasagna found a place in your kitchen, here are a few others that are always on heavy rotation at my house:
- My Grandmother’s Bolognese Sauce — It takes four hours and is worth every single minute.
- Crispy Baked Chicken Thighs with Lemon and Oregano — The quick weeknight version of a Sunday dinner.
- Simple Roasted Zucchini with Parmesan and Herbs — The side dish that started this whole lasagna journey.
This lasagna is my answer to the “what do I do with all this zucchini?” question that pops up every August. It’s the dish that got my kids to ask for seconds of a vegetable. And it’s the pan I bring when a friend needs a freezer meal — because it holds up, it travels well, and it always, always makes someone’s week better.
If you make it, let me know how it goes in the comments. I love hearing about the versions you create in your own kitchens.
📌 Pin this hearty zucchini lasagna recipe for your next summer meal prep — it’s the one that actually holds up without getting watery, and my kids ask for it by name.

Hearty Zucchini Lasagna That Doesn’t Get Soggy — Finally
Equipment
- Rimmed Baking Sheet
- Large Skillet or Dutch Oven
- 9×13-inch baking dish
- Paper towels
- Cutting board and sharp knife
Ingredients
For the Roasted Zucchini
- 1 1/2 pounds zucchini (about 3 medium)
- Kosher salt – for drawing out moisture
- 1 tablespoon olive oil
For the Meat Sauce
- 1 pound ground beef (80/20)
- 1/2 pound ground pork (or Italian sausage, casings removed)
- 1 yellow onion, diced
- 4 cloves garlic, minced
- 1 can (28 oz) crushed tomatoes (preferably San Marzano)
- 2 tablespoons tomato paste
- 1 teaspoon dried oregano
- 1/2 teaspoon red pepper flakes (optional)
- Salt and pepper to taste
For the Cheese Mixture
- 15 ounces whole milk ricotta cheese
- 1 large egg
- 1/2 cup grated Parmesan cheese, divided
- 1/2 cup fresh basil, chopped (divided)
For the Lasagna Assembly
- 2 cups shredded low-moisture mozzarella cheese
- 9 lasagna noodles (no-boil preferred, or regular boiled 2 min less than al dente)
Instructions
- Preheat your oven to 400°F for the zucchini, then lower it to 375°F for the final bake.
- Prep and Roast the Zucchini: Trim ends off zucchini and slice lengthwise into 1/4-inch strips. Lay on a paper-towel-lined baking sheet and sprinkle both sides generously with kosher salt. Let sit 15 minutes. Pat completely dry with another layer of paper towels. Transfer to a clean, dry baking sheet, toss with 1 tablespoon olive oil, and spread in a single layer. Roast at 400°F for 10 minutes, flipping once halfway. Set aside to cool.
- Make the Sauce: In a large skillet or Dutch oven over medium-high heat, combine ground beef and pork. Cook, breaking it up, until well browned, about 8 minutes. Drain all but about 1 tablespoon of fat. Add the diced onion and cook until softened, about 4 minutes. Add garlic, oregano, and red pepper flakes (if using); cook 30 seconds until fragrant. Stir in tomato paste and cook 1 minute. Pour in crushed tomatoes. Season with salt and pepper. Simmer on low heat for 15-20 minutes until thick – it should hold its shape on a spoon.
- Prepare the Cheese Mixture & Noodles: In a small bowl, combine ricotta, egg, 1/4 cup Parmesan, and half the basil. Stir until smooth. If using no-boil noodles, soak them in hot water for 5 minutes while you assemble.
- Assemble the Lasagna: Spread a thin layer of meat sauce on the bottom of a 9×13 dish. Top with 3 lasagna noodles. Add 1/3 of the roasted zucchini strips, dollop with 1/2 of the ricotta mixture, then 1/3 of the remaining meat sauce, and a sprinkle of mozzarella. Repeat layers: 3 noodles, 1/3 zucchini, remaining ricotta, 1/3 meat sauce, mozzarella. Top with final 3 noodles, remaining zucchini, remaining meat sauce, then generous sprinkle of mozzarella and remaining 1/4 cup Parmesan.
- Bake and Rest: Place lasagna on a baking sheet to catch drips. Bake at 375°F for 40 minutes until bubbling and deeply golden on top. Let rest at least 20-30 minutes before slicing – this is non-negotiable for clean slices.






