Preheat the oven to 350°F and lightly grease your baking dish.
Bring a large pot of salted water to a boil and cook the elbow macaroni until just al dente. Drain well and set aside.
In a saucepan, melt the butter over medium heat. Whisk in the flour and cook for 1–2 minutes until it smells nutty.
Slowly whisk in the milk and cook until thickened. Remove from heat and stir in the cheddar, mozzarella, Parmesan, Dijon mustard, garlic powder, onion powder, salt, and pepper until smooth.
Add the cooked macaroni and diced ham into the cheese sauce. Gently stir until coated.
Pour the mixture into the prepared baking dish and spread evenly.
Mix the panko breadcrumbs with melted butter, Parmesan, and parsley, then sprinkle evenly over the top.
Bake uncovered for 25–30 minutes until bubbly and golden. Let rest for 5 minutes before serving.