Heat ham drippings and butter in a skillet over medium heat until melted and lightly bubbling. The mixture should smell rich and slightly smoky.
Sprinkle in the flour and whisk constantly to form a smooth paste (roux). Cook for about 1–2 minutes until it turns lightly golden and nutty.
Slowly pour in the milk while whisking to prevent lumps. Continue whisking until the mixture becomes smooth and creamy.
Add the diced ham and stir to combine. Let the gravy gently simmer so the ham flavor infuses into the sauce.
Season with black pepper, salt, and garlic powder if using. Stir well and taste to adjust seasoning.
Continue cooking for 3–4 minutes until the gravy thickens enough to coat the back of a spoon. If too thick, add a splash of milk.
Remove from heat and serve warm over biscuits, mashed potatoes, or sliced ham.