Distribute the baking powder, salt, and granulated sugar throughout the flour with a whisk in a large mixing bowl. The dry mixture should look uniform, without visible pockets of baking powder.
Use another bowl to whisk the eggs with the ricotta, vanilla, and milk into an evenly blended mixture. A creamy consistency is the goal, though small soft ricotta curds can remain.
Fold the wet mixture into the dry mixture gradually, stopping as soon as the flour disappears. The combined batter should feel thick and sticky, with enough body to cling to the spoon.
Bring about 2 inches of vegetable oil to 350°F (175°C) in a deep, heavy-bottomed pot or skillet, monitoring it with a candy thermometer. Keep the thermometer reading steady at the target before adding batter.
Release tablespoon-sized scoops into the oil with a small cookie scoop or two spoons, leaving room between them, and fry for 2–3 minutes per side while turning with a slotted spoon. The portions should expand into puffed fritters with a golden-brown crust.
Lift each cooked fritter out with the slotted spoon and transfer it to a paper towel-lined plate. Excess surface oil will drain away rather than collect beneath the crust.
Let the zeppole cool slightly before sifting powdered sugar generously over them. The coating should remain visible instead of immediately dissolving against the hot surface.
Bring the zeppole to the table while they’re still warm. The exterior will be at its crispest, with a soft, moist ricotta center.