To begin, prepare the shell dough. In a large mixing bowl, combine the flour, sugar, cinnamon, and salt. Add the lard (or butter) and rub it into the flour mixture using your fingertips until the mixture resembles coarse crumbs. This technique ensures the shells will be light and crispy.
Make a well in the centre of the flour mixture and add the white wine vinegar and marsala wine, starting with 2 tablespoons of marsala. Mix with a fork or your hands until a dough forms. If it feels too dry, add an additional tablespoon of marsala. Knead the dough on a lightly floured surface for about 5 minutes until smooth and elastic. Wrap the dough in plastic wrap and let it rest at room temperature for 30 minutes. Resting the dough helps to develop the gluten and makes it easier to roll out thin.
While the dough is resting, prepare the filling. In a medium bowl, beat the ricotta cheese until smooth and creamy. Stir in the powdered sugar, vanilla extract, and citrus zest (if using). Adjust sweetness to taste. Once combined, fold in the chocolate chips or chopped pistachios if you like. Cover the filling and refrigerate while you prepare the shells. Chilling the ricotta helps it firm up and ensures it fills the shells without being too runny.
Once the dough has rested, divide it into two portions for easier handling. Roll out each portion on a floured surface until very thin, about 1/8 inch (3mm). Use a round cookie cutter (about 4 inches in diameter) to cut out circles. You can reroll the scraps to make more shells. Stretch each dough circle slightly into an oval to match the traditional cannoli shape.
To shape the shells, wrap each dough oval around a metal cannoli tube, sealing the edges with a small dab of the beaten egg. Press the edges gently to ensure they stick. Be careful not to wrap the dough too tightly around the tubes, as the shells will expand slightly when fried.
In a deep frying pan, heat the vegetable oil to 180°C (350°F). Carefully place a few of the wrapped cannoli tubes into the hot oil, frying them for 2-3 minutes, or until golden brown and crispy. Use a slotted spoon to turn the shells occasionally for even cooking. Once golden, remove the tubes from the oil and drain them on paper towels. Allow the shells to cool for a few minutes, then gently slide them off the metal tubes. Repeat with the remaining shells.
Once all the shells are fried and cooled, fill them just before serving to keep the shells crisp. Use a pastry bag or spoon to carefully fill each shell with the chilled ricotta mixture, piping from both ends to ensure the filling reaches the centre. Avoid overfilling, as the shells can crack.
To serve, dust the filled cannoli with powdered sugar and garnish the ends with extra chocolate chips or chopped pistachios if desired. Serve immediately to enjoy the perfect contrast of crispy shells and creamy filling. Cannoli are best eaten fresh but can be kept in the refrigerator for a short time. For an authentic experience, pair the cannoli with a strong espresso or sweet dessert wine.