Heat the olive oil in a 6qt sauté pan or large stockpot over medium-high heat. Add italian sausage. Cook and crumble until browned, crispy and cooked through.
Add butter, onion, salt & pepper to sausage. Stir and cook until onions are cooked through.
Add in garlic. Stir and cook until fragrant, about 30 seconds.
Add wine and tomatoes. Scrape up browned bits from the bottom of the pan. Cook until wine is mostly absorbed.
Add in flour and stir until mo more specks of raw flour remain.
Add in half and half, broth and italian seasoning. Stir around until well blended and simmering. Reduce heat to medium-low. Add pasta. Keep pasta submerged under liquid. Stir it occasionally to keep pasta from sticking to the bottom of the pan, but resubmerge pasta every time you stir.
Cook until pasta is cooked through and sauce is quite thick (about 10 to 15 minutes). Stir in spinach and remove from heat.
Stir in cheeses. If it looks dry, you can add in a few tablespoons of milk. I didn't need to.
Sprinkle with minced parsely and serve immediately.