Optional: preheat oven to 350°F.
Cook pasta according to package directions. Drain and return to pan.
While the pasta is cooking, cook the sausage over medium heat in a large frying pan. Use a wooden spoon to break up the sausage into small bits. This takes about 5-10 minutes. Drain the fat and set the sausage aside.
Using a 3 quart saucepan (or you can use the pan you cooked the sausage in, if it’s deep enough), melt the butter over medium heat. Add the onion and cook until soft, about 2-3 minutes. Add the garlic and cook 1 more minute. Stir in the flour completely and cook for 1 minute, then add the milk. Stir to combine the mixture, then add the italian seasoning.
Cook over medium heat, stirring almost constantly, until the mixture thickens, about 10 minutes or so. It should be the consistency of a creamy soup. Stir in the cheese until melted. Add salt and pepper to taste.
Stir the sausage into the cooked pasta, then stir in the cheese sauce. At this point you can eat it from the pan, or bake it to form a crunchier top (or to keep it warm for company).
If baking, place in a 9x13” pan and bake about 15 minutes. You can also just put the oven on low and keep it warm that way.
Store in an airtight container for up to 3 days. This can be made one day ahead and reheated in the oven as well.