Make the Cannoli Shells:
- Prepare the Dough: In a large bowl or food processor, combine flour, sugar, salt, and cinnamon. Add the cold butter pieces and work them into the flour using your fingertips or pulse in the processor until the mixture resembles coarse crumbs.
- Add Wet Ingredients: In a small bowl, whisk together the egg, egg yolk, and wine. Add to the flour mixture and stir (or pulse) until a shaggy dough forms. If the dough seems too dry, add wine one teaspoon at a time. If too wet, add flour one tablespoon at a time.
- Knead the Dough: Turn the dough onto a lightly floured surface and knead for 8-10 minutes until smooth, elastic, and only slightly sticky. The dough should be firm but pliable. Shape into a disc, wrap tightly in plastic wrap, and refrigerate for at least 1 hour (or up to overnight).
- Roll the Dough: Remove dough from refrigerator and let sit for 10 minutes. On a lightly floured surface, roll the dough very thin—about ⅛ inch thick or thinner if possible. The thinner the dough, the crispier the shells. If you have a pasta machine, roll to setting 6 or 7.
- Cut Circles: Using a 3½ to 4-inch round cutter or glass, cut circles from the dough. Gather scraps, re-roll once, and cut more circles. You should get 12-14 circles total.
- Form the Shells: Lightly brush one edge of a dough circle with beaten egg white. Wrap the circle around a cannoli tube, overlapping the edges where you brushed the egg white. Press gently to seal. The dough should be snug but not stretched. Repeat with remaining circles—you’ll fry in batches based on how many tubes you have.
- Heat the Oil: In a large, heavy pot, heat 3-4 inches of oil to 350-365°F. Use a thermometer to monitor temperature—this is crucial for perfectly crispy shells.
- Fry the Shells: Carefully lower 2-3 dough-wrapped tubes into the hot oil. Fry for 2-3 minutes, turning occasionally with tongs or a spider strainer, until deep golden brown and crispy with bubbles all over. Don’t overcrowd the pot or the temperature will drop.
- Drain and Cool: Using tongs or a spider strainer, carefully remove the tubes from oil and place on paper towels. Let cool for about 1 minute until you can handle them, then gently slide the shells off the tubes using a clean kitchen towel to grip them. Place shells on a wire rack to cool completely. The tubes will be very hot—be careful! Wipe tubes clean and let them cool slightly before forming more shells.
- Repeat: Continue forming and frying shells until all dough circles are used. Let all shells cool completely before filling.
Make the Ricotta Filling:
- Drain Ricotta: If your ricotta seems watery, place it in a fine-mesh strainer lined with cheesecloth set over a bowl. Refrigerate for 30 minutes to 2 hours to remove excess moisture.
- Beat the Filling: In a large bowl, beat the drained ricotta with an electric mixer on medium speed (or stir vigorously with a wooden spoon) for 1-2 minutes until smooth and creamy. Add powdered sugar, vanilla extract, citrus zest, and salt. Beat until completely combined and fluffy, about 2 more minutes.
- Add Mix-Ins: Gently fold in the mini chocolate chips. Cover and refrigerate the filling until ready to use (at least 30 minutes for best texture). The filling can be made up to 24 hours ahead.
- Fill the Shells: This step should be done just before serving! Transfer the ricotta filling to a piping bag or large zip-top bag with one corner snipped off. Pipe filling into one end of a cannoli shell, then flip and pipe from the other end until completely filled. Alternatively, use a small spoon to carefully fill from both ends.
- Garnish: Dip the ends of filled cannoli in chopped pistachios, extra mini chocolate chips, or leave plain. Dust generously with powdered sugar. Optionally, place a small piece of candied cherry on one end for traditional presentation.
- Serve Immediately: Cannoli are best enjoyed within 1-2 hours of filling while the shells are still crispy. Arrange on a platter and watch them disappear!