Bring a large pot of salted water to boil. Add the pasta to the water and cook until al dente, according to package directions. Drain and set aside.
Preheat the oven to 350 degrees F, and lightly grease a 9x13 or similar baking dish.
Melt the butter in a Dutch oven or similar large, deep pot over medium heat. Add the onion and sauté until beginning to soften, about 6 minutes.
Sprinkle in the flour, then cook whisking often, until the flour is golden brown, about 2 minutes. Stir in the garlic and cook 30 seconds.
Gradually pour in milk, whisking constantly, then the half and half. Continue to cook until the sauce simmers and thickens, about 7 minutes.
Remove from heat, then stir in the salt and nutmeg, then the Greek yogurt, cheddar, and half of the sage.
Add the drained pasta and ham, toss gently to coat.
Transfer the mixture to the prepared baking dish.
Combine the breadcrumbs and olive oil in a small bowl and sprinkle over the top of the pasta. Cover the dish with foil, then bake for 10 minutes covered. Uncover and bake 10 additional minutes, until the crumbs are golden and the pasta is hot and bubbly. If desired, turn your broiler to high to finish browning the crumbs, watching them carefully so that they do not burn. Remove baked pasta from the oven, sprinkle with remaining sage, and serve.
Notes
TO STORE: Refrigerate casserole in an airtight storage container for up to 4 days.
TO REHEAT: Rewarm leftovers in a baking dish in the oven at 350 degrees F or in the microwave.
TO FREEZE: Freeze casserole in an airtight, freezer-safe storage container for up to 3 months. Let thaw overnight in the refrigerator before reheating.