Imagine biting through a toasty, cinnamon-scented almond flour shell into a cloud of sweet ricotta and mascarpone cream studded with dark chocolate and brightened by fresh orange zest. These cannoli cups capture everything you love about the iconic Sicilian pastry — the shattering crunch, the lush filling, the play between bitter chocolate and citrus — without a single grain of sugar or wheat flour. The air fryer gives the cups a golden, evenly crisp shell using barely a tablespoon of butter, so they're lighter than traditional deep-fried cannoli but just as satisfying.

Each serving delivers roughly 41 grams of fat from the rich combination of whole-milk ricotta, mascarpone, cream cheese, and almonds, with only 6 grams of net carbs. That puts these firmly in keto territory, where fat is fuel and desserts don't require compromise. The 15 grams of protein per serving — mostly from ricotta and almond flour — give the treat some staying power, so it works as a proper after-dinner sweet rather than a quick sugar spike that leaves you reaching for more.

The entire recipe comes together in about 40 minutes, with most of that being hands-off air fryer time and cooling. You make one small bowl of dough, press it into silicone cups, air fry, and whip together the filling while you wait. No rolling pin, no piping bags, no pastry skill required. They're a showstopper for dinner parties, but simple enough for a Tuesday night when you just want something sweet.

Ingredients (serves 4)

For the cannoli cups:

  • 3/4 cup (72g) blanched almond flour
  • 2 oz (56g) cream cheese, softened
  • 1 large egg
  • 1 tablespoon (14g) unsalted butter, melted
  • 2 tablespoons granulated erythritol
  • 1/2 teaspoon ground cinnamon
  • Pinch of fine sea salt

For the ricotta filling:

  • 1 cup (246g) whole-milk ricotta cheese
  • 1/2 cup (113g) mascarpone cheese
  • 3 tablespoons powdered erythritol (or monk fruit sweetener blend)
  • 1 teaspoon pure vanilla extract
  • 1 tablespoon finely grated orange zest (about 1 large orange)
  • 1 oz (28g) dark chocolate (85% cacao or higher), finely chopped

For the garnish:

  • 2 tablespoons shelled pistachios, roughly chopped
  • Dark chocolate shavings
  • Fresh orange zest curls

Instructions

  1. Make the dough. In a medium bowl, combine the almond flour, softened cream cheese, egg, melted butter, granulated erythritol, cinnamon, and salt. Mix with a fork until everything is evenly incorporated, then knead briefly with your hands until a smooth, slightly sticky dough forms. If it feels too soft to hold its shape, refrigerate it for 10 minutes.

  2. Shape the cups. Divide the dough into 8 equal portions, about 1 tablespoon each. Press each portion into a silicone mini muffin cup or small oven-safe ramekin (roughly 2 inches / 5cm across), pushing the dough evenly up the sides to form a cup about 1/4 inch (6mm) thick. Prick each base once or twice with a fork to prevent puffing. The walls don't need to be perfect — uneven, rustic edges look beautiful and bake up extra crisp.

  3. Preheat the air fryer to 325°F (163°C) for 2 minutes. Arrange the filled silicone cups in the basket in a single layer with space between each for air to circulate. Depending on your air fryer size, you may need to work in two batches.

  4. Air fry for 10–12 minutes until the cups are golden brown and firm when you press the edge gently with a fingertip. The rims will darken first — that toasty color adds a nutty, almost biscotti-like flavor. Remove the basket carefully and let the cups cool completely in their molds, about 8–10 minutes. They'll firm up as they cool. Gently unmold once set.

  5. Make the filling while the cups cool. In a clean medium bowl, whisk together the ricotta, mascarpone, powdered erythritol, vanilla extract, and orange zest until smooth and slightly fluffy, about 1–2 minutes of vigorous whisking by hand (or 30 seconds with an electric hand mixer on low). Fold in the chopped dark chocolate with a spatula, distributing it evenly throughout.

  6. Fill and garnish. Spoon or pipe the ricotta mixture generously into each cooled cup, mounding it slightly above the rim. Scatter the chopped pistachios over the tops, add a few dark chocolate shavings, and finish each with a curl of fresh orange zest.

  7. Serve immediately for the best contrast between crispy shell and cool, creamy filling. Alternatively, refrigerate the filled cups for up to 2 hours before serving — the cups will soften slightly but remain pleasantly firm. Two cups make one serving.

Nutrition per Serving

Nutrient Amount
Calories ~445 kcal
Fat ~41g
Protein ~15g
Total Carbs ~9g
Fiber ~3g
Net Carbs ~6g

Nutrition is approximate and based on the stated ingredients. Actual values may vary by brand; erythritol is excluded from carb and calorie counts as it has no glycemic impact.

Tips & Variations

Drain your ricotta for a thicker, richer filling. Supermarket whole-milk ricotta often contains more whey than fresh deli ricotta, making it watery and thin. Before mixing, spoon it into a fine-mesh strainer set over a bowl and let it drain for 15–20 minutes. This concentrates the creamy richness, helps the filling hold its shape inside the cups, and prevents soggy bottoms. If your ricotta already feels dense and dry (like the tub from a good Italian deli), you can skip this step.

Pick the right sweetener for each component. Granulated erythritol works best in the cup dough because it holds its structure during baking. For the filling, powdered erythritol dissolves smoothly and avoids gritty texture. Allulose is an excellent alternative for the filling — it doesn't crystallize and produces an even silkier consistency. Avoid liquid stevia in the dough (it throws off the moisture balance), though a few drops can boost sweetness in the filling if your erythritol brand runs mild.

Turn the filling into a standalone cannoli dip. Skip the cups entirely and serve the ricotta-mascarpone filling in a small bowl, topped with the chocolate and pistachios, alongside almond flour crackers, celery sticks, or even just a spoon. The filling holds well in the fridge for up to three days in a sealed container, making it a zero-effort make-ahead dessert for guests.

Watch the cacao percentage on your chocolate. Not all dark chocolate qualifies for keto. Standard 70% bars carry roughly 10–12g net carbs per ounce — enough to push a single serving of this dessert over the limit. Stick to 85% cacao or higher, and look for bars sweetened with stevia or erythritol (Lily's and ChocZero are reliable keto options) for the lowest carb count. When in doubt, read the label: you want 4g net carbs per ounce or less.

Try a splash of Marsala for an adults-only variation. One tablespoon of dry Marsala wine whisked into the filling adds authentic Sicilian depth — a subtle, wine-like warmth that pairs beautifully with the orange and chocolate — for about 1g of extra carbs. Sugar-free amaretto syrup is another option that adds almond-cherry notes without any carbs at all. Either addition turns this from a weeknight treat into something you'd be proud to serve at a dinner party.

Frequently Asked Questions

Can I use all ricotta and skip the mascarpone?
You can, but the texture and fat macros will both change. Mascarpone is about 44% fat compared to whole-milk ricotta's 13%, so it contributes significantly to the silky mouthfeel and the high-fat profile that keeps this dessert keto-friendly. An all-ricotta filling will be lighter, slightly grainier, and lower in fat. To compensate, beat in 2 tablespoons of softened cream cheese for richness and add an extra tablespoon of powdered sweetener, since ricotta tastes less naturally sweet. The result will still be good — just leaner and more closely resembling a traditional Italian ricotta filling than the richer mascarpone version.
What can I use instead of almond flour for a nut-free version?
Sunflower seed flour is the closest substitute and works at a one-to-one ratio — same quantity, same method. It produces a slightly earthier, more golden cup with comparable fat and protein content. One cosmetic note: sunflower seed flour can turn green when it reacts with baking soda, but since this recipe contains none, you won't encounter that. Coconut flour is another option, though it absorbs far more liquid. You'd need only about 3 tablespoons (21g) of coconut flour plus one additional egg yolk to achieve the right dough consistency. The coconut version bakes up denser and slightly sweeter, with a more crumbly texture.
How do I store these, and can I prep them in advance?
Store the unfilled cups in an airtight container at room temperature for up to three days, or freeze them layered between parchment for up to a month. The filling can be made separately and refrigerated in a sealed container for up to three days. For the best texture, fill the cups no more than two hours before serving — once the ricotta meets the shell, moisture slowly transfers and the cups begin to soften. If you do need to fill ahead, store them in the fridge. They'll be softer by the next day, more like a cookie base than a crisp shell, but still quite good. Rewarm unfilled cups in the air fryer at 300°F (150°C) for 2–3 minutes to re-crisp them.
How can I adapt this for dairy-free or vegan keto?
This is a dairy-heavy dessert, so a full swap changes the character, but it works. Replace the ricotta and mascarpone with a combination of well-chilled coconut cream (scooped from the top of a refrigerated can) and cashew-based cream cheese. Use coconut oil in place of butter in the dough, and substitute a flax egg (1 tablespoon ground flaxseed mixed with 3 tablespoons water, rested for 5 minutes) for the regular egg. The filling won't have ricotta's natural tang, so add a teaspoon of lemon juice to brighten it. Use dairy-free dark chocolate for the fold-in. Fat macros will stay high thanks to coconut cream, but protein will drop to about 6–8g per serving.
My cups puffed up or cracked during air frying — how do I fix that?
Puffing means the dough layer at the base is too thick or wasn't docked. Press it as thin as you can manage — about 1/4 inch (6mm) maximum — and poke the base with a fork two or three times before air frying, just like you'd dock a pie crust. Cracking usually happens when the dough is too dry, which can occur because almond flour varies in moisture content between brands. If your dough feels crumbly and won't hold together when pressed, knead in an extra teaspoon of melted butter or a splash of heavy cream until it becomes pliable and smooth. Finally, air fryer temperatures vary between models, so if your first batch over-browns or crisps unevenly, reduce the temperature by 10°F (5°C) and check a minute earlier on the next batch.