Cannoli have a structural problem, and it isn’t the filling. Sunday afternoon in mid-December, when the light goes flat by four and you’re looking for something to do with your hands — that’s when this recipe makes sense. The shell is where every cannoli either holds together or gives up.

A well-fried cannoli shell should shatter cleanly when you bite through it. Not crack reluctantly, not bend — shatter, with an audible sound and a small scatter of crumbs. That crispness lasts maybe two hours after frying. The moment ricotta meets shell, moisture migration begins, and by the time you’ve laid them on a platter for thirty minutes, you’ve already lost the battle. The solution isn’t a better filling. It’s understanding what the shell needs, and when it needs it.
Why you’ll love this recipe
Ingredient Notes

Everything for twelve: the dough components left, the filling ingredients right.
- All-purpose flour : The base of the shell. At around 45% of the total dough weight, it provides structure without making the shell rigid. Bread flour would make it tough; cake flour would make it fragile. All-purpose is the functional middle ground, and there’s no reason to deviate.
- Cold butter : Cut into small cubes and worked into the flour with your fingertips. At roughly 12% of dough weight, the fat is what creates the shell’s blistered, layered texture when it hits hot oil. Warm or melted butter distributes too evenly and produces a smooth, dense shell with no character.
- Apple cider vinegar : One teaspoon. The acidity slows gluten development and keeps the dough extensible without tearing when you wrap it around the tube. It also promotes blistering during frying. This is why the substitution works: the mechanism is acidity, not the flavor of Marsala.
- Full-fat ricotta : Drain it overnight in a fine-mesh strainer lined with cheesecloth. Full-fat ricotta contains roughly 12–15% moisture by weight; after twelve hours of draining, that drops to around 8%. That difference is what separates a filling that holds its shape from one that begins softening the shell within minutes of contact.
- Orange zest : One large orange, zested — not juiced. The volatile oils in the zest are sharp and bright against the fat of the ricotta. Juice would reintroduce moisture you’ve just spent twelve hours removing.
- Dark chocolate chips : Not chopped chocolate, despite what most pastry books will tell you. The chip retains its shape inside the ricotta and gives you a defined textural hit when you bite through. Chopped chocolate disperses into the filling and disappears into the background.
Start With the Fat
The dough comes together in under ten minutes, and most of that time is resting. Combine flour, a pinch of sugar, half a teaspoon of cinnamon, and a tablespoon of unsweetened cocoa powder — the cocoa is for color, not flavor, and at this concentration you won’t taste it. Work in cold butter with your fingertips until the mixture looks like coarse, uneven sand, with some butter pieces still visible as small flakes. That unevenness is intentional: uniform fat distribution makes a smooth shell; irregular distribution makes a blistered one. Add the egg, the apple cider vinegar, and one tablespoon of cold water. Mix just until the dough pulls together — firm and slightly tacky, not sticky. Wrap it and let it rest at room temperature for thirty minutes. Gluten that was worked during mixing relaxes during the rest, which means the dough rolls out thin without springing back and tearing.

Roll Thin. No, Thinner.
Divide the rested dough into two pieces and roll each to about 2mm — roughly the thickness of two stacked credit cards. This is where most home attempts fail. A shell rolled at 3mm fries up with a dense, bread-like interior; at 2mm, it develops the airy, blistered structure you’re after. Cut circles approximately 10cm in diameter. Wrap each one firmly around a metal cannoli tube, overlapping the dough edge and pressing it to seal. The overlap doesn’t need significant pressure — the oil will fuse it during frying. What matters is that the dough sits snug against the tube with no trapped air pockets, because pockets expand rapidly in hot oil and crack the shell open before it sets.
Oil Temperature Is Not Negotiable
Use a neutral oil with a high smoke point — sunflower or refined peanut both work. Heat it to 180°C (355°F) and use a thermometer. At 170°C, the shells absorb more oil before they crisp and come out heavy. At 190°C, the exterior browns before the interior dough has fully cooked through. At 180°C, the shell blisters within forty-five seconds and turns a deep amber gold within ninety. Lower the tubes in gently, two or three at a time to avoid a temperature drop, and turn them once during frying. Drain on a wire rack, not paper towels. Paper traps steam against the shell and softens it immediately. The rack lets air circulate on all sides, and that circulation is the difference between a shell that holds its crispness as it cools and one that doesn’t.
The Filling Takes Five Minutes
Once the ricotta has drained overnight and the shells have cooled completely, the filling is straightforward. Beat the drained ricotta with powdered sugar — roughly 80g of sugar per 500g of drained ricotta, adjusted to taste — until smooth and cohesive. Fold in the orange zest and chocolate chips. The filling should be thick enough to hold a peak when dropped from a spoon: stiff, not flowing. If it isn’t, the ricotta needed more draining time. Don’t attempt to fix it at this stage by adding anything — that path leads to a filling that’s been compromised beyond its purpose, and the extra ingredient will show.
Fill at the Last Possible Moment
This is the only rule that matters for serving. Pipe the filling into the shells from both ends toward the center, no more than fifteen minutes before you intend to eat them. At fifteen minutes, the shell has softened slightly at the tips but holds at the center. At thirty minutes, the whole thing has gone soft. Dust with powdered sugar, press crushed pistachios into the exposed filling at each end, and serve. The contrast between the cold, dense filling and the room-temperature shell — one yielding, one resistant — is what the dessert is built around. Refrigerating filled cannoli collapses that contrast entirely, and you end up with something that tastes closer to a soggy tube of sweetened cheese.

Tips & Tricks
- Store unfilled shells in an airtight container at room temperature for up to 24 hours. Do not refrigerate them — condensation will soften the shell within an hour. If they’ve already gone soft, five minutes in a 160°C oven recovers most of the crispness.
- The dough can be made ahead and refrigerated overnight. Bring it fully back to room temperature before rolling — cold dough resists thinning and tears at the edges rather than stretching.
- If a shell splits open during frying, the dough was either rolled too thick or had an air pocket under the overlap. Press the seam more firmly before lowering the tube into the oil, and make sure the oil is at temperature before each batch.
- Pipe the filling using a wide round tip, not a star tip. A star tip creates uneven distribution and leaves hollow sections inside the shell that collapse when you bite through.

Why does my filling make the shell go soft within minutes?
The problem is moisture content. Full-fat ricotta straight from the container contains roughly 12–15% water by weight; that water transfers into the fried shell almost immediately upon contact. Draining overnight reduces it to around 8%, which slows the process significantly — but the only reliable fix is filling cannoli no more than 15 minutes before you serve them. There is no technique that makes a filled cannoli shelf-stable at room temperature.
My shells are cracking open in the oil. What’s going wrong?
Two likely causes, and they’re both fixable. First, the dough was rolled too thick — at anything over 2mm, steam builds up inside the shell faster than the dough can set, and it cracks from the inside. Second, there was an air pocket trapped between the dough and the tube. Wrap each circle snugly with no gaps, and press the overlapping seam firmly before lowering into the oil.
Can I make cannoli shells without metal tubes?
Not well. Wooden dowels are sometimes suggested, but they absorb oil and can scorch. The tube needs to conduct heat evenly and release the cooked shell cleanly — which means stainless steel, specifically. If you don’t have cannoli tubes, this isn’t a recipe to improvise around with substitutes; the geometry of the shell depends on the form.
Can I store unfilled shells in the refrigerator to extend their life?
No. Refrigeration introduces condensation onto the shell surface, and condensation softens a fried shell faster than anything else. Store unfilled shells at room temperature in an airtight container for up to 24 hours. If they’ve gone soft by the time you need them, five minutes in a 160°C oven recovers most of the crispness.
Why apple cider vinegar instead of Marsala?
In the dough, Marsala functions primarily as an acid — it slows gluten development, keeps the dough extensible during rolling, and promotes blistering during frying. Apple cider vinegar does the same job. The flavor of Marsala at one or two teaspoons per 200g of flour is not detectable in the finished shell, so replacing it with a cleaner acid loses nothing structural.
Can I substitute the ricotta with something else?
Strained full-fat cottage cheese works in a pinch — the texture after overnight draining is comparable, though the flavor is slightly less clean. Mascarpone alone is too rich and too dense; if you use it, cut it with drained ricotta at a 1:2 ratio. Cream cheese behaves differently and produces a different dessert. None of these are improvements, only functional substitutions.
Cannoli Beyond the Filling: How to Keep the Shell Crisp
Italian
Desserts
Twelve cannoli with a blistered, shattering shell and a ricotta filling held together by overnight draining and precise timing. The shell is where this recipe is won or lost.
Ingredients
- — For the shell dough —
- 200g all-purpose flour
- 10g granulated sugar
- 8g unsweetened cocoa powder
- ½ tsp ground cinnamon
- 1 pinch fine salt
- 25g cold unsalted butter, cut into small cubes
- 1 large egg
- 1 tsp apple cider vinegar
- 1–2 tbsp cold water
- — For frying —
- 1 liter neutral oil (sunflower or refined peanut)
- — For the filling —
- 500g full-fat ricotta, drained overnight
- 80g powdered sugar
- 1 large orange, zested (zest only, not juice)
- 80g dark chocolate chips
- — For garnish —
- 50g unsalted pistachios, roughly crushed
- powdered sugar for dusting
Instructions
- 1The night before: line a fine-mesh strainer with cheesecloth, add the ricotta, cover, and refrigerate overnight to drain. Discard the liquid.
- 2Combine flour, sugar, cocoa powder, cinnamon, and salt in a mixing bowl. Add the cold butter cubes and work in with your fingertips until the mixture resembles coarse, uneven sand — some butter flakes still visible.
- 3Add the egg, apple cider vinegar, and 1 tablespoon of cold water. Mix until the dough just comes together into a firm, slightly tacky mass. Add the second tablespoon of water only if the dough won’t cohese. Do not overwork.
- 4Wrap the dough in plastic and rest at room temperature for 30 minutes.
- 5Divide the dough into two pieces. On a lightly floured surface, roll each piece to 2mm thickness. Cut into circles approximately 10cm in diameter.
- 6Wrap each circle snugly around a metal cannoli tube, overlapping the dough edge by about 1cm. Press the seam firmly. Make sure no air is trapped between the dough and the tube.
- 7Heat the oil to 180°C in a deep saucepan. Use a thermometer — temperature accuracy is not optional here. Fry 2–3 tubes at a time, turning once, until the shells are deep amber gold, approximately 90 seconds total.
- 8Transfer to a wire rack to drain. After 5 minutes, grip the shell firmly and slide it off the tube with a slight twisting motion. Cool completely on the rack before filling.
- 9Beat the drained ricotta with powdered sugar until smooth. Fold in the orange zest and dark chocolate chips. The filling should hold a peak when dropped from a spoon.
- 10No more than 15 minutes before serving, pipe filling into the shells from both ends toward the center using a wide round tip. Press crushed pistachios into the exposed filling at each end. Dust lightly with powdered sugar and serve immediately.
Notes
• Unfilled shells keep at room temperature in an airtight container for up to 24 hours. Do not refrigerate — condensation softens them within an hour.
• If shells have gone soft before you need them, revive them for 5 minutes in a 160°C oven before filling.
• The cocoa powder in the dough is for color only. At 8g per 200g flour, it does not read as chocolate in the finished shell.
• The 15-minute window after filling is firm. After that, moisture migration from the ricotta will have softened the shell ends noticeably.
Nutrition Facts (per serving, estimated)
| 255 kcalCalories | 8gProtein | 25gCarbs | 13gFat |