Preheat the oven to 350 degrees . In a large pot of boiling salted water, cook the pasta until al dente, about 11 minutes.
Meanwhile, heat a large, heavy-bottomed saucepan over medium-high heat. Add the sausage and cook, stirring and breaking up the meat with a wooden spoon, until no longer pink, 3 to 4 minutes. Transfer the sausage to a large bowl and wipe the saucepan clean.
Add the pasta and 1 cup caramelized onions to the sausage and stir to combine. In a medium saucepan or a microwave oven, heat the milk until steaming.
Return the large saucepan to the stove, add the butter and melt over medium heat. Add the flour and cook, whisking constantly, for 3 minutes. Whisk in the hot milk, 1/4 cup at a time, and continue whisking until the sauce is smooth and thick and comes to a simmer. Add 2-1/2 cups cheese, remove from the heat and whisk until the cheese is melted, about 2 minutes; season to taste with salt and pepper. Add the cheese sauce to the pasta mixture and stir to combine.
Butter a 9-by-13-inch baking dish and add the pasta mixture in an even layer. Sprinkle the remaining 1/2 cup caramelized onions and 1-1/2 cups cheese on top. bake until golden and bubbling, about 40 minutes. Remove from the oven and let rest for 10 minutes before serving.