Cook pasta (16 ounces) according to package instructions in well-salted water. Before draining,reserve 1 cup of pasta water. Drain.
In a large skillet, brown the sausage (16 ounces) until there is no longer any pink. Remove to a paper towel-lined plate. Drain the fat from the skillet.
Melt butter (2 tablespoons) in the skillet then sauté onion (1 cup) and garlic (1 tablespoon) over medium-low heat until soft, about 5-7 minutes.
Sprinkle flour (2 tablespoons) over sautéd onions and cook, whisking constantly for 1 minute.
Remove pan from heat and slowly whisk in cream (2 cups), diced tomatoes (1 15-ounce can), and sun-dried tomatoes (1/4 cup) until smooth.
Return skillet to medium and bring to a boil, stirring constantly. Reduce heat to low and stir cream cheese (4 ounces), mozzarella cheese (2 cups), parmesan cheese, (1 cup), Italian seasoning (3 teaspoons), salt (1/4 teaspoon), and pepper (1/4 teaspoon), and simmer gently until cheese is melted. Stir in spinach and simmer until it just starts to wilt.
Pour sauce into the pan pasta was originally cooked. Stir in cooked pasta. Return cooked meat to the pot and toss until well coated. Cook just until everything is heated back up. If the sauce is too thick, thin with reserved pasta water. Use as much or as little as you like. You can also add it, later, as the pasta sits. Remove pot from heat and stir in basil and serve.
Notes
What Is Al Dente: This is considered to be the ideal texture for the pasta to be cooked to. In the Italian language, it means, "to the tooth". Al dente pasta is firm to the bit, not mushy at all!
Why Reserve Pasta Water: This is a great tip from Italian chefs. The pasta water contains starch from cooking the pasta. Adding this liquid to your sauce will thicken it and help the sauce cling to the pasta.
Pasta Variations: This is greatly made with any medium tube shape pasta.