Start by boiling the potatoes (in their skins) until done, about 30 to 40 minutes. You'll know they're cooked when a fork inserted in a potato, pierces easily through.
Drain potatoes and let cool 15 minutes before peeling.
Using a potato ricer, mash all of the potatoes. Allow to completely cool, uncovered (you want potatoes to dry).
When potatoes are cool, add 2 eggs, parmigiano, 3 tbsp flour, cut up ham, parsley, salt and pepper. Mix well.
Now, set three stations for breading: one with the flour, one with the beaten eggs, and one with the breadcrumbs.
With a spoon, take a ping pong ball size amount of mixture and roll it in your hand into a small cylinder.
If you decide to use mozzarella as a filling, add a couple of small pieces in the center of the potato tube. Roll again to make sure filling is totally enclosed. If you don't want to use filling, just shape potato mixture into a tube and proceed to next step.
Pass each croquette into the flour first. Shake off excess. Next, pass lightly into the beaten egg. Finally, into the breadcrumbs. Set aside and repeat until all mixture is gone.
Heat oil to 350 degrees (or until a small piece of potato mixture dropped into the oil, comes immediately up and oil bubbles up around it).
Fry croquettes, a few at a time (do not overcrowd your pan!) until golden on all sides.
Drain on paper towels. Serve warm.