In a medium saucepan, melt the butter over medium heat. Once melted, gradually add the flour, stirring constantly to create a smooth roux. Cook for 2–3 minutes, or until the flour is slightly golden, to remove the raw taste.
Slowly pour in the milk, whisking continuously to avoid lumps. Continue stirring until the mixture thickens into a smooth béchamel sauce, about 5–6 minutes. Aim for a consistency that is creamy but not too runny.
Add the finely chopped ham (or your chosen filling) to the béchamel sauce, along with salt, pepper, and nutmeg. Stir well to combine. Taste and adjust seasoning as needed, ensuring a balanced, flavourful filling.
Pour the mixture into a shallow dish and allow it to cool to room temperature. Once cooled, cover with plastic wrap and refrigerate for at least 2 hours, or until the mixture is firm enough to shape.
Set up a breading station with three shallow bowls: one with flour, one with the beaten eggs, and one with breadcrumbs. With lightly floured hands, shape the chilled mixture into small cylinders or ovals, about 1–1.5 inches in diameter.
Roll each croquette first in flour, then dip in the beaten egg, and finally coat with breadcrumbs. Press the breadcrumbs gently to ensure they adhere well, which helps in achieving a crisp crust when fried.
In a deep pan or fryer, heat vegetable oil to 350°F (175°C). Carefully place the croquettes in the oil in small batches, frying for 2–3 minutes or until golden brown and crispy. Avoid overcrowding to maintain an even fry.
Remove the croquettes with a slotted spoon and place them on a paper towel-lined plate to drain excess oil. Serve warm, garnished with a sprinkle of fresh parsley if desired, and pair with a mild aioli or spicy dipping sauce to enhance the experience.