Bring a large pot of salted water to a boil. Add the penne or rigatoni pasta and cook according to the package instructions until al dente, about 8-10 minutes. Drain the pasta and set it aside.
Cook the Sausage and Vegetables
In a large skillet, heat the olive oil over medium heat. Add the Italian sausage (remove the casings if using sausage links) and cook, breaking it up into crumbles with a wooden spoon, until browned, about 6-8 minutes.
Add the chopped onion, minced garlic, and sliced mushrooms to the skillet. Cook for an additional 5 minutes, or until the vegetables are softened and fragrant. Stir occasionally to prevent the garlic from burning.
Make the Sauce
Sprinkle the all-purpose flour over the sausage and vegetable mixture. Stir well to combine and cook for 1-2 minutes, allowing the flour to absorb the oil and flavors.
Slowly whisk in the whole milk and heavy cream, stirring constantly to avoid lumps. Continue stirring as the mixture begins to thicken, about 3-4 minutes. The sauce should be smooth and creamy by this point.
Add the Italian seasoning, salt, and pepper to taste. Stir in the shredded mozzarella and grated Parmesan cheese until fully melted and incorporated, creating a rich and creamy sauce.