Quick Recipe Version (TL;DR)
Quick Ingredients
- 12 fresh egg pasta rectangles (4×6 in / 10×15 cm) or 12 dried cannelloni shells
- 2 cups (500 g) whole-milk ricotta, well drained
- 1 lb (450 g) fresh spinach or 10 oz (300 g) frozen spinach, thawed and squeezed dry
- 1 large egg
- Parmigiano-Reggiano: 3/4 cup (60 g) for filling + 1/2 cup (40 g) for topping
- Garlic: 3 cloves (2 for sauce, 1 for spinach)
- Extra-virgin olive oil: 2 tbsp (30 ml)
- Tomato passata or crushed tomatoes: 2 cups (480 ml); basil leaves
- Whole milk: 3 1/2 cups (840 ml); unsalted butter: 4 tbsp (56 g); all-purpose flour: 1/4 cup (30 g)
- Kosher salt, black or white pepper, pinch of nutmeg
- Optional: 1/2 cup (56 g) shredded low-moisture mozzarella
Do This
- 1) Heat oven to 375°F (190°C). Lightly oil a 9×13-in (23×33 cm) baking dish.
- 2) Sauce: Sauté 2 minced garlic cloves in 2 tbsp oil (30 sec). Add 2 cups passata, basil, 1/2 tsp salt; simmer 8–10 min.
- 3) Béchamel: Melt 4 tbsp butter; whisk in 1/4 cup flour (1 min). Gradually whisk in 3 1/2 cups warm milk; simmer 5–7 min until nappe-thick. Season with 3/4 tsp salt, white pepper, pinch nutmeg.
- 4) Filling: Wilt spinach, squeeze very dry, chop. Mix with ricotta, 1 egg, 3/4 cup Parm, 1 minced garlic clove, 1 tsp salt, pepper.
- 5) Pasta: Blanch fresh sheets 30–45 sec; drain and pat dry. If using dried shells, do not pre-boil.
- 6) Assemble: Spread 3/4 cup tomato sauce in dish. Pipe about 1/3 cup filling into each tube; arrange. Cover with béchamel, spoon remaining tomato on top, sprinkle 1/2 cup Parm (plus mozzarella if using). Bake 25–30 min (fresh) or 35–40 min (dried). Broil 2–3 min to brown; rest 5–10 min.
Why You’ll Love This Recipe
- Classic Italian comfort: silky béchamel, bright tomato, and a creamy ricotta-spinach center.
- Family-friendly technique with options for fresh pasta or dried cannelloni shells.
- Make-ahead friendly for stress-free entertaining.
- Balanced flavors: nutmeg-kissed white sauce and basil-scented tomato keep it elegant, not heavy.
Grocery List
- Produce: Spinach, garlic, fresh basil, lemon (optional for zest)
- Dairy: Whole-milk ricotta, whole milk, unsalted butter, Parmigiano-Reggiano, mozzarella (optional), 1 egg
- Pantry: Tomato passata or crushed tomatoes, extra-virgin olive oil, all-purpose flour, kosher salt, black/white pepper, ground nutmeg, fresh pasta sheets or dried cannelloni shells
Full Ingredients
Tomato Sauce
- 2 tbsp (30 ml) extra-virgin olive oil
- 2 garlic cloves, thinly sliced or minced
- 2 cups (480 ml) tomato passata or crushed tomatoes
- 4–6 fresh basil leaves, torn (or 1/2 tsp dried oregano)
- 1/2 tsp kosher salt, plus more to taste
- 1/8 tsp freshly ground black pepper
- Pinch of sugar (optional, if tomatoes are very acidic)
Béchamel
- 4 tbsp (56 g) unsalted butter
- 1/4 cup (30 g) all-purpose flour
- 3 1/2 cups (840 ml) whole milk, warmed
- 3/4 tsp kosher salt
- 1/4 tsp white pepper (or black pepper)
- 1/8 tsp freshly grated nutmeg
Ricotta–Spinach Filling
- 1 lb (450 g) fresh spinach, stems trimmed (or 10 oz/300 g frozen spinach, thawed and squeezed very dry)
- 2 tsp olive oil (for wilting fresh spinach)
- 1 small garlic clove, minced
- 2 cups (500 g) whole-milk ricotta, drained if watery
- 1 large egg
- 3/4 cup (60 g) finely grated Parmigiano-Reggiano
- 1 tsp kosher salt
- 1/4 tsp freshly ground black pepper
- 1/8 tsp grated nutmeg
- 1/2 tsp lemon zest (optional, for brightness)
Pasta & Assembly
- 12 fresh egg pasta rectangles (4×6 in / 10×15 cm, about 300 g) or 12 dried cannelloni shells (about 250 g)
- 3/4 cup (180 ml) tomato sauce for the base of the dish (from above)
- Remaining tomato sauce for topping
- All of the béchamel for topping
- 1/2 cup (40 g) finely grated Parmigiano-Reggiano, for crust
- Optional: 1/2 cup (56 g) shredded low-moisture mozzarella
- Olive oil or cooking spray for the baking dish
- Fresh basil leaves, for garnish

Step-by-Step Instructions
Step 1: Preheat and set up
Heat the oven to 375°F (190°C). Lightly oil a 9×13-inch (23×33 cm) baking dish and set aside. Warm the milk for the béchamel over low heat in a saucepan or in the microwave; warm milk blends more smoothly into the roux.
Step 2: Make the tomato sauce
In a medium saucepan, heat 2 tbsp olive oil over medium heat. Add 2 cloves garlic and cook just until fragrant, about 30 seconds. Stir in 2 cups passata, basil, 1/2 tsp salt, and a pinch of pepper (and sugar if needed). Simmer gently, uncovered, 8–10 minutes until slightly thickened. Taste and adjust seasoning. Keep warm on low.
Step 3: Make the béchamel
In a separate saucepan, melt 4 tbsp butter over medium heat. Whisk in 1/4 cup flour and cook, whisking, for 1 minute to remove the raw flour taste. Gradually whisk in the warm milk, a splash at a time at first, whisking until smooth before adding more. Bring to a gentle simmer and cook 5–7 minutes, whisking often, until the sauce thickly coats the back of a spoon. Season with 3/4 tsp salt, 1/4 tsp white pepper, and 1/8 tsp nutmeg. Keep warm on the lowest heat; if it thickens too much, whisk in a splash of milk.
Step 4: Cook and drain the spinach
For fresh spinach: Heat 2 tsp oil in a large skillet over medium. Add spinach and a pinch of salt; cook, tossing, 2–3 minutes until just wilted. Add the minced small garlic clove in the last 30 seconds. Transfer to a colander and let cool, then squeeze thoroughly to remove excess water. Chop finely. For frozen spinach: Thaw completely, then wring out as much moisture as possible in a clean towel; chop if needed.
Step 5: Mix the ricotta filling
In a bowl, combine ricotta, egg, 3/4 cup Parmigiano, chopped spinach, 1 tsp salt, 1/4 tsp pepper, 1/8 tsp nutmeg, and lemon zest if using. Stir until smooth and cohesive. If very stiff, loosen with 1–2 tbsp of the béchamel; if too loose, add 1–2 tbsp grated Parmigiano. Transfer to a piping bag or a large zip-top bag and snip a 3/4-inch opening.
Step 6: Prepare the pasta
For fresh pasta sheets: Bring a large pot of well-salted water to a boil. Working in batches, drop in 3–4 rectangles and cook 30–45 seconds, just until pliable. Transfer to a bowl of cold water to stop cooking, then lay on clean towels and pat dry. Keep sheets stacked between lightly oiled parchment to prevent sticking. For dried cannelloni shells: No pre-boil needed; ensure your filling is pipeable so it fills the tubes end-to-end.
Step 7: Fill and arrange
Spread 3/4 cup of the tomato sauce over the bottom of the baking dish. For fresh sheets, pipe about 1/3 cup (roughly 75 g) filling along the short edge of each sheet and roll into a snug tube, seam side down. For dried shells, pipe filling from both ends until the tube is fully filled. Arrange cannelloni in a single layer in the dish.
Step 8: Sauce, bake, and finish
Pour the béchamel evenly over the cannelloni, covering all surfaces. Spoon the remaining tomato sauce in ribbons or dollops over the top so both sauces are visible. Sprinkle with 1/2 cup Parmigiano (and mozzarella, if using). Cover loosely with foil and bake until bubbling: 25–30 minutes for fresh rolled cannelloni or 35–40 minutes for dried shells. Remove foil and broil 2–3 minutes until the top is deeply golden in spots. Rest 5–10 minutes to settle. Garnish with basil and serve hot.
Pro Tips
- Drain ricotta: If it looks watery, spread it in a sieve for 15–30 minutes. Drier ricotta means creamier, not runny, filling.
- Really squeeze the spinach: Excess moisture dilutes flavor and loosens the filling.
- Keep béchamel silky: Press parchment or plastic wrap directly onto the surface if holding to prevent a skin.
- Piping bag hack: A large zip-top bag with the corner snipped makes stuffing dried tubes fast and tidy.
- Two-sauce balance: Don’t drown the pasta—thin base of tomato, blanket of béchamel, then tomato accents on top for color and brightness.
Variations
- Sausage & spinach: Brown 8 oz (225 g) mild Italian sausage; cool and fold into the filling. Reduce salt slightly.
- Mushroom & thyme: Sauté 8 oz (225 g) finely chopped cremini with thyme until browned and dry; mix into the filling.
- Bianco (no tomato): Skip the tomato sauce and use an extra 1 cup (240 ml) béchamel. Add a bit more nutmeg and a sprinkle of lemon zest.
Storage & Make-Ahead
Assemble up to 24 hours ahead: Cover tightly and refrigerate. Bake cold pan at 375°F (190°C) for 35–45 minutes (fresh) or 45–55 minutes (dried), until hot and bubbling. To freeze (unbaked), wrap well and freeze up to 2 months; bake from frozen, covered, at 375°F (190°C) for 60–70 minutes, then uncover and broil to brown. Leftovers keep 3 days in the fridge; reheat covered at 350°F (175°C) for 15–20 minutes or until warmed through.
Nutrition (per serving)
Approximate: 610 calories; 30 g fat; 52 g carbohydrates; 29 g protein; 3 g fiber; 1130 mg sodium. Values will vary with pasta type and cheese amounts.


Leave a Reply