Cannoli Recipe
Crisp, blistered homemade cannoli shells filled with smooth sweetened ricotta, vanilla and a hint of cinnamon.
Contains: Wheat · Milk · Egg
This recipe contains wheat, milk and egg. Marsala can also contain sulfites, and reused frying oil can introduce cross-contact, so check the labels and use oil appropriate to your needs if allergies are a concern.
WHY IT WORKS
Why This Recipe Works
01
Roll the Shells Thin
Thinly rolled dough fries into crisp, blistered shells instead of thick, bread-like tubes.
02
Use Well-Drained Ricotta
Draining excess whey keeps the ricotta filling thick, creamy and easy to pipe without softening the shells too quickly.
03
Fill Just Before Serving
Keeping the shells and filling separate until serving preserves the contrast between crisp pastry and smooth ricotta.
WHAT YOU’LL NEED
Equipment
THE RECIPE
Ingredients & Method
Use these cooking tools without leaving the recipe. Change the servings, switch measurements, keep a private note in this browser, and use any timer buttons shown below the method steps.
Ingredient quantities have been scaled. Cooking time, oven temperature, pan size and method timings are unchanged.
My Notes
Ingredients
- Cannoli Shells
-
-
-
-
-
Tools
-
-
-
-
-
- Ricotta Filling
-
Tools
-
-
Tools
-
-
Method
Tap a step number as you finish it.
Timed steps show a timer button beneath the instruction.
-
In a large bowl, whisk together the flour, granulated sugar, salt and cinnamon. Rub in the cold butter until the mixture looks sandy. Stir in the egg yolk, reserving the white for sealing the shells, then add the Marsala and white wine vinegar. Mix to a firm dough and knead for about 4 to 5 minutes, until smooth. If the dough is too dry to come together, add the cold water 1 teaspoon (tsp) at a time.
-
Wrap the dough and let it rest at room temperature for 30 minutes. The rest makes the dough easier to roll thinly without springing back.
-
While the dough rests, stir the well-drained ricotta, 3/4 US cup confectioners' sugar, vanilla and cinnamon together until smooth. Cover and refrigerate for at least 30 minutes while you roll and fry the shells.
-
Pour enough neutral oil into a deep, heavy-bottomed saucepan or pot to reach a depth of about 2 inches (in). Heat it to 350°F. Divide the dough in half and keep one half covered. Roll the other half very thin, about 1/16 inch (in), and cut rounds with the 4-inch cutter.
-
Wrap each dough round around a cannoli tube so the edges overlap slightly. Brush a small amount of reserved egg white onto the top edge only, then press firmly to seal. Keep the egg white away from the metal tube so the shell releases cleanly after frying.
-
Fry 2 or 3 cannoli tubes at a time for about 1 to 2 minutes, turning as needed, until the shells are blistered and evenly golden. Keep the oil close to 350°F. Lift the tubes out with a slotted spoon or tongs, drain briefly, then let them cool for about 1 minute before carefully sliding off the shells.
-
Repeat with the remaining dough, re-rolling scraps once if needed. Let all of the shells cool completely before filling them.
-
Transfer the chilled ricotta filling to a piping bag. Pipe filling into both ends of each shell shortly before serving, then dust lightly with the remaining 2 tablespoons (tbsp) confectioners' sugar.
COOKING GUIDANCE
Practical Cooking Notes
Make Ahead
Fry and cool the shells up to 2 days ahead and keep them airtight at room temperature. Prepare the ricotta filling up to 24 hours ahead and refrigerate it covered. Keep shells and filling separate until shortly before serving so the pastry stays crisp.
Recipe tools
Adapt This Recipe
Change the quantities, measurements, pan, cooking method or ingredients, then turn what you need into a shopping list.
Dietary options
Make This Recipe Work for You
Only straightforward swaps are offered automatically. If changing a defining ingredient would effectively create a different dish, that conversion is left out.
For allergies, intolerances or strict dietary requirements, check the labels of the specific products you use. These swaps do not certify a recipe or ingredient as allergen-free.
Recipe Notes
Ingredient Notes
Whole-milk ricotta gives the filling a fuller texture, but it must be well drained. If whey is pooling in the container, drain the ricotta in a fine-mesh sieve in the refrigerator before mixing the filling.
Useful Substitutions
Dry Marsala can replace sweet Marsala. For an alcohol-free dough, use 1/4 US cup water plus 1 tablespoon (tbsp) white wine vinegar, then add a little more water only if needed; the shell flavor and blistering may be slightly different.
INGREDIENT QUALITY
Quality Note
The moisture level of the ricotta has a major effect on the filling. If whey is pooling in the container, drain the ricotta in a fine-mesh sieve in the refrigerator before mixing; adding extra sugar is not a good substitute for draining.
SPEND LESS
Cost-Saving Tip
Store-brand whole-milk ricotta works well when it is properly drained. A smaller deep, heavy saucepan can also reach a useful frying depth with less oil than a wide pot.
COOKING TIPS
Tips
Roll It Thin
Cannoli dough should be rolled very thin before it goes around the tubes. Thick dough takes longer to crisp and produces heavier shells.
Use Well-Drained Ricotta
Keep the oil close to 350°F while frying. Oil that is too cool makes the shells greasy; oil that is too hot can brown them before they crisp through.
Seal Only the Edge
Brush egg white only where the dough overlaps. Too much can stick the pastry to the metal tube and make the cooked shell harder to remove.
Fill at the Last Minute
Pipe the ricotta into completely cooled shells shortly before serving. Filled cannoli gradually soften as moisture moves from the filling into the pastry.
MAKE IT LAST
Unfilled Shells & Making Ahead
Unfilled Shells
Cool the fried shells completely, then keep them in an airtight container at room temperature for up to 2 days. Do not refrigerate unfilled shells because humidity can soften them.
Freezing
Unfilled shells can be frozen in a rigid airtight container for up to 1 month. Thaw them at room temperature before filling. Freezing the ricotta filling is not recommended because its texture can become grainy or watery.
Ricotta Filling
Keep the filling covered in the refrigerator for up to 24 hours. Stir it briefly before piping if it has settled, but avoid beating it heavily.
Filled Cannoli
Cannoli are best eaten soon after filling. Refrigerate leftovers promptly and use them within 1 day, knowing the shells will become softer.
ESTIMATED PER SERVING
Nutrition
1 cannoli
Nutrition information is an estimate. Where shown, % Daily Value uses standard US Daily Values for adults and children aged 4+; actual values vary with ingredient brands, exact quantities and portion size.
QUESTIONS
Cannoli FAQs
Why are my cannoli shells not crisp?
Roll the dough very thin, keep the frying oil close to 350°F and let the fried shells cool completely before storing or filling them. Thick dough or cool oil can produce heavier, less crisp shells.
How do I keep the ricotta filling from becoming runny?
Start with well-drained whole-milk ricotta. If it looks wet, drain it in the refrigerator before adding the sugar. Extra confectioners’ sugar can make the filling sweeter without reliably fixing excess moisture.
Can I make cannoli without Marsala?
Yes, although the flavor and shell texture may change slightly. Use 1/4 US cup water plus 1 tablespoon (tbsp) white wine vinegar in place of the Marsala, adding a little extra water only if the dough will not come together.
Can I make the shells and filling ahead?
Yes. Fry and cool the shells up to 2 days ahead and keep them airtight at room temperature. Make the filling up to 24 hours ahead and keep it covered in the refrigerator. Fill the shells shortly before serving.
Why should cannoli be filled just before serving?
The shells are crisp and the ricotta filling contains moisture. Once filled, that moisture gradually moves into the pastry, so filling at the last minute gives the best contrast in texture.
Looking for Something Else to Cook?
Browse more SinOrSlim recipes or use the recipe tools to adapt what you already have.