Heat oil in a medium skillet or cast-iron pan over medium heat. Add pearl onions and reduce heat to medium low. Cook, stirring occasionally, until onions are deep golden brown in parts, about 15 minutes. Add ham to the skillet and set aside.
While onions are cooking, boil pasta in salted water according to package directions. Drain and set aside.
Use the pasta pot to save a dish, and melt butter in pot over medium-high heat. Add flour and whisk to combine with the butter, then whisk in the milk and stir until no flour lumps remain. Stir in nutmeg, garlic powder and salt.
Whisk sauce until just bubbling, then reduce heat to a simmer and cook, stirring, until sauce has become a bit thicker and viscous, about 5 minutes.
Stir in cheddar a bit at a time (in about 3 batches) stirring each batch until cheese is melted. Remove from heat. Add pasta and reserved onions and ham. Serve, topped with toasted breadcrumbs and chopped parsley.
To toast breadcrumbs with butter, heat a non-stick skillet over medium-high heat and add 1 tablespoon butter. Add ½ cup breadcrumbs and stir constantly until toasted, about 3 minutes. Remove from heat and let cool.