Cook the pasta: Bring a large pot of salted water to a boil. Cook pasta 1 to 2 minutes less than package directions for al dente. Drain and set aside.
Preheat the oven: Set to 375°F (190°C).
Grease a 9x13-inch baking dish with nonstick spray or butter.
Brown the sausage: Heat 1 tablespoon olive oil in a large skillet over medium-high heat. Add sausage, breaking it into crumbles, and cook until browned and no longer pink, about 6–8 minutes. Transfer to a plate, leaving some fat in the pan.
Sauté aromatics: Add remaining olive oil if needed.
Cook onion with a pinch of salt until soft and lightly golden, 4–5 minutes. Stir in garlic for 30 seconds until fragrant.
Wilt the spinach: Add chopped spinach and cook until just wilted, 1–2 minutes. Season with a little salt, pepper, Italian seasoning, and red pepper flakes if using.
Make it saucy: Reduce heat to low.
Stir in Alfredo sauce and milk (or half-and-half). Add the cooked sausage back to the pan and simmer lightly for 1–2 minutes. Taste and adjust seasoning.
Combine with pasta: In a large bowl, mix the pasta with the sauce mixture.
Fold in half the mozzarella and half the Parmesan.
Assemble the casserole: Spread the pasta mixture in the prepared baking dish. Top with remaining mozzarella and Parmesan.
Bake: Cover loosely with foil and bake for 15 minutes. Remove foil and bake another 10–12 minutes, until bubbly and lightly golden on top.
Rest and serve: Let the casserole rest for 5–10 minutes.
Garnish with extra Parmesan and cracked pepper if you like. Serve warm.