Preheat the oven to 375°F. Lightly grease a 9x13-inch baking dish and set aside.
Bring a large pot of salted water to a boil. Cook the rigatoni according to package directions until just al dente. Drain and set aside.
Heat the olive oil in a large skillet over medium heat. Season the chicken pieces with salt, pepper, garlic powder, and Italian seasoning. Cook until browned and cooked through, about 6 to 8 minutes. Remove from the skillet and set aside.
In the same skillet, melt the butter over medium heat. Add the diced onion and cook until softened, about 3 minutes. Stir in the minced garlic and cook for 30 seconds.
Whisk in the flour and cook for 1 minute, stirring constantly. Slowly whisk in the milk and heavy cream until the mixture is smooth and no lumps remain.
Add the cream cheese, Parmesan, 1 cup of mozzarella, and the cheddar. Stir over medium-low heat until everything is melted and the sauce is smooth and creamy.
Return the cooked chicken to the skillet. If using spinach, add it now and stir until wilted, about 1 to 2 minutes.
Add the drained rigatoni to the skillet and toss until evenly coated in the cheese sauce.
Transfer the pasta mixture to the prepared baking dish and spread it evenly. Sprinkle the remaining 1 cup of mozzarella over the top.
Bake uncovered for 15 to 20 minutes, until the top is bubbly and lightly golden. Garnish with chopped parsley before serving.