Heat a large pot of water to a boil for the pasta. Salt the boiling water and cook the pasta just shy of al dente, 5 to 6 minutes.
Meanwhile, heat a deep skillet over medium to medium-high heat. Melt the butter and when it foams, add the garlic and shallots, then season with salt and pepper. Sprinkle in the flour, whisk for 1 minute. Then whisk in the milk and thicken the sauce to coat the back of a spoon. Melt in the Sage Derby cheese, then add the ham. Separate the spinach as you stir it into sauce as well. Toss the pasta with the sauce, and pour into a casserole dish, top with the Parm. Cool and reserve for a make-ahead meal.
To serve, preheat the oven to 400 degrees F. Bake from room temp until brown and bubbly, 35 to 45 minutes.