Fill a large saucepan halfway with water and bring to a boil over medium-high heat. Add Elbow Macaroni (16 ounce) and cook 3 minutes shy of al dente (3 minutes short of package recommendations).
Preheat oven to 350 degrees F (180 degrees C) and coat a 9x13-inch baking dish with Nonstick Cooking Spray (as needed). Set aside.
Drain, rinse, and add the cooked pasta to the prepared pan in a single layer.
Place the Bacon (6 slice) in a large skillet or Dutch oven and cook over medium-high heat until cooked through.
Drain grease, leaving bacon pieces in the pan. Add Salted Butter (1/2 cup) to the skillet and melt over medium heat.
Add All-Purpose Flour (1/4 cup) and whisk until combined. Add Milk (3 cup) and whisk until mixture is creamy. Add Shredded Cheddar Cheese (2 cup), Shredded Mozzarella Cheese (2 cup), Salt (1 teaspoon), and Ground Black Pepper (1 teaspoon) and stir until cheese is melted.
Add Ham (1 package) and stir until combined.
Pour the cheese-meat mixture over top of the pasta in the baking dish. Stir so the pasta is well-coated and top with Grated Parmesan Cheese (1/2 cup).
Bake uncovered in the preheated oven for 20 minutes or until cheese is lightly golden brown around the edges.
Let cool for 5 minutes then serve.