I said what I said.
Once you make lasagna from scratch — with a real meat sauce, a creamy béchamel, and layers that actually hold together when you cut into them — the freezer version just doesn’t do it anymore.
This recipe is the one I keep coming back to. It’s not complicated. It’s just done right.
And the whole thing? It reheats like a dream, which honestly might be the most underrated quality a recipe can have.
What You’ll Need

For the Meat Sauce
- 1 lb (450g) ground beef (80/20 blend)
- 1 lb (450g) Italian sausage, casings removed
- 1 can (28 oz) crushed San Marzano tomatoes
- 1 can (6 oz) tomato paste
- 1 medium yellow onion, finely diced
- 5 cloves garlic, minced
- 1 tsp dried oregano
- 1 tsp dried basil
- 1/2 tsp red pepper flakes
- 1 tsp sugar
- Salt and black pepper to taste
- 2 tbsp olive oil
For the Béchamel Sauce
- 4 tbsp unsalted butter
- 4 tbsp all-purpose flour
- 3 cups whole milk, warmed
- 1/2 tsp nutmeg (freshly grated if possible)
- Salt and white pepper to taste
For the Layers
- 12–15 lasagna noodles (regular, not no-boil)
- 2 cups whole milk ricotta cheese
- 1 large egg
- 2 cups shredded low-moisture mozzarella
- 1 cup freshly grated Parmesan cheese
- Fresh basil leaves (optional, for topping)
Tools You’ll Need
- Large heavy-bottomed skillet or Dutch oven
- Medium saucepan
- Whisk
- 9×13 inch baking dish
- Large pot (for boiling noodles)
- Colander
- Aluminum foil
- Wooden spoon or spatula
- Ladle
- Sharp knife and cutting board
Pro Tips
These are the things nobody tells you the first time — and they make all the difference.
- Use a combination of beef and sausage. Ground beef alone gives you a flat, one-note sauce. The sausage adds depth, fat, and seasoning that you genuinely can’t replicate any other way.
- Make the meat sauce the day before. Seriously. A sauce that’s been sitting overnight in the fridge tastes completely different — richer, deeper, more developed. If you have the time, do this.
- Don’t skip the béchamel. A lot of people sub in more ricotta to save time. I get it. But béchamel is what gives you that creamy, silky, restaurant-quality layer that makes the whole thing feel luxurious instead of just… heavy.
- Slightly undercook your noodles. They’ll keep cooking in the oven. Pull them out when they’re just barely al dente — a little bite left — and they won’t turn to mush by the time you’re done baking.
- Rest it before cutting. 15–20 minutes minimum. It feels like torture. It’s worth it. The layers actually hold together and you get those beautiful clean slices instead of a soupy pile.
Substitutions and Variations
You don’t have to follow this recipe to the letter. Here are a few swaps that work well:
| Ingredient | Substitute |
|---|---|
| Ground beef + sausage | Ground turkey or chicken sausage |
| Whole milk ricotta | Cottage cheese (drained) |
| Regular lasagna noodles | No-boil noodles (reduce liquid slightly) |
| Whole milk (béchamel) | 2% milk (less rich but still works) |
| Mozzarella | Provolone or fontina |
| Parmesan | Pecorino Romano |
For a vegetarian version: Skip the meat entirely and layer in sautéed mushrooms, zucchini, and spinach instead. The béchamel holds everything together beautifully.
Gluten-free: Use gluten-free lasagna noodles and swap the all-purpose flour in the béchamel for a 1:1 gluten-free flour blend.
Make Ahead Tips
This is genuinely one of the best recipes to prepare in advance.
- Meat sauce: Make up to 3 days ahead and store in the fridge, or freeze for up to 3 months.
- Full assembled lasagna: Assemble it completely, cover tightly with foil, and refrigerate up to 24 hours before baking. Add 10–15 minutes to the bake time if going straight from cold.
- Freeze unbaked: Wrap tightly with foil and plastic wrap. Freeze for up to 2 months. Thaw overnight in the fridge, then bake as directed.
How to Make It

Step 1: Make the Meat Sauce
Heat olive oil in a large skillet over medium-high heat.
Add the diced onion and cook for 4–5 minutes until softened. Add the garlic and cook another minute.
Add the ground beef and sausage. Break it up as it cooks. Let it actually brown — don’t rush this part. Drain excess fat if needed.
Stir in the tomato paste and cook for 2 minutes (this removes the raw tomato taste and adds a deeper flavor). Add the crushed tomatoes, oregano, basil, red pepper flakes, sugar, salt, and pepper.
Reduce heat to low and simmer for at least 30 minutes. An hour is even better.
Step 2: Make the Béchamel
Melt butter in a medium saucepan over medium heat. Add flour and whisk constantly for 1–2 minutes. You’re cooking out the raw flour taste.
Slowly pour in the warm milk, whisking the whole time to prevent lumps. Keep whisking until the sauce thickens — around 5–7 minutes.
Season with nutmeg, salt, and white pepper. Remove from heat.
Step 3: Cook the Noodles
Boil a large pot of salted water. Cook noodles until just under al dente (about 2 minutes less than the package says).
Drain, then lay them flat on a lightly oiled baking sheet so they don’t stick together.
Step 4: Mix the Ricotta
In a small bowl, mix together the ricotta and egg. Season with a pinch of salt and pepper. Set aside.
Step 5: Assemble
Preheat your oven to 375°F (190°C).
Spread a thin layer of meat sauce on the bottom of your 9×13 baking dish — this prevents sticking.
Then layer in this order:
- Noodles (slightly overlapping)
- Ricotta mixture (spread evenly)
- Meat sauce
- Béchamel
- Mozzarella + Parmesan
Repeat layers until you run out, ending with noodles, béchamel, and a generous layer of both cheeses on top.
Step 6: Bake
Cover with foil (tented so it doesn’t stick to the cheese) and bake for 30 minutes.
Remove the foil and bake for another 20–25 minutes until the top is golden and bubbly.
Let it rest for 15–20 minutes before cutting. This is non-negotiable. 😌
Nutritional Breakdown
Per serving (based on 12 servings)
| Nutrient | Amount |
|---|---|
| Calories | ~480 kcal |
| Protein | 30g |
| Carbohydrates | 32g |
| Fat | 24g |
| Saturated Fat | 11g |
| Sodium | ~680mg |
| Fiber | 2g |
Note: These are estimates and will vary based on specific brands used.
Meal Pairing Suggestions
Lasagna is already a full meal, but if you want to round it out:
- Garlic bread or focaccia — genuinely essential
- Simple arugula salad with lemon and Parmesan shavings
- Roasted green beans with olive oil and sea salt
- Caesar salad if you want to keep things classic
Leftovers and Storage
Lasagna might actually taste better the next day. The layers set up, the flavors deepen, and reheating it feels like a reward.
- Fridge: Store in an airtight container or covered dish for up to 5 days.
- Freezer: Individual slices wrapped in foil, then placed in a freezer bag. Good for up to 3 months.
- Reheating: Cover with foil and reheat in a 350°F (175°C) oven for 20–25 minutes. Or microwave individual slices with a damp paper towel on top to keep it from drying out.
FAQ
Can I use no-boil noodles? Yes, with one caveat — your sauce needs to be slightly more liquid than usual since no-boil noodles absorb more moisture as they cook. Add a splash of water or extra crushed tomatoes to the sauce.
My lasagna turned out watery. What happened? A few things can cause this: sauce that wasn’t reduced enough, ricotta that wasn’t drained, or not letting it rest before cutting. Give the sauce more time on the stove and always — always — rest before slicing.
Can I make this without béchamel? You can, but the texture will be different. More ricotta-forward, drier, and less creamy. If you’re in a hurry, mix a little heavy cream into your ricotta to get some of that richness back.
How many does this serve? A standard 9×13 dish gives you about 12 good-sized portions. It’s great for feeding a crowd or stocking the freezer.
Can I add vegetables to the meat sauce? Absolutely. Finely diced carrots, celery, and bell pepper all work well. Add them with the onion at the start and let them cook down fully before adding the meat.
Do I really need to let it rest? Yes. A thousand times yes. The internal temperature needs to come down slightly and the layers need to set. Cutting into it too soon is the main reason lasagna looks like a soupy mess on the plate.
Wrapping Up
This is the kind of recipe that makes people ask you for it.
It takes a bit of time — I won’t pretend otherwise — but it’s the kind of cooking that feels good. You’re building something layer by layer, and when it comes out of the oven golden and bubbling and smelling like an Italian grandmother’s kitchen, it’s completely worth it. 🍝
Make it this weekend. Make it for people you love. Make it just for yourself and eat it all week.
And when you do, drop a comment below. Tell me how it went, what you swapped, what questions you still have. I read every single one and genuinely love hearing what happens when you make these recipes your own.