Heat oven to 375°F. Lightly grease a 9×13-inch baking dish.
Boil pasta in salted water until just shy of al dente. Drain and set aside.
Warm olive oil in a large skillet over medium heat. Soften onion for 3 minutes.
Stir in garlic and cook 30 seconds. Add asparagus and sauté 3–4 minutes until bright and crisp-tender.
Whisk soup, milk, Dijon, salt, and pepper in a bowl until smooth.
Combine pasta, ham, sautéed vegetables, sauce, and half the cheddar in a large bowl.
Spread mixture in the baking dish. Top with remaining cheddar and all the mozzarella.
Mix panko with melted butter and Parmesan. Sprinkle evenly over the casserole.
Bake 25–30 minutes until bubbly and golden. Rest 10 minutes before serving.