Prep steps: I recommend prepping all ingredients for this recipe prior to getting started. Microwave the cream cheese for 20-30 seconds so it gets very soft (or leave it on the counter for a couple hours). Season the chicken with salt & pepper after you cut it up. Preheat oven to 350F and move the rack to the top third of the oven.
Boil a salted pot of water for the spaghetti, and cook it 2 minutes less than indicated on the package (it was 9 minutes for the brand I used). Once it's cooked, drain it and set it aside.
Meanwhile, add the oil, 1 tablespoon of the butter, and the onion to a pot over medium-high heat. Sauté the onion for 4-5 minutes or until lightly browned.
Add in the chicken and cook for 5-6 minutes or until it's almost cooked through (don't overcook). Transfer the chicken to a plate (don't worry if there's some onions left in the pot).
Add the garlic, the remaining 2 tablespoons of butter, the Italian seasoning, and the mushrooms to the pot. Cook for about 5 minutes or until the mushrooms have released their water and it's mostly cooked off.
Increase the heat to high and add in the chicken broth, cream, and cream cheese (I cut it into smaller pieces first). Cook for 5 minutes, stirring nearly constantly to help the cream cheese melt in. Don't cook the sauce for longer because then it will get too thick and the pasta will end up dry.
Turn the heat off and add the chicken back to the pot, along with the cooked and drained pasta. Give it a good stir.
Transfer the pot contents to a 9x13 baking dish and arrange it in an even layer. Sprinkle the top with the parmesan cheese, followed by the mozzarella.
Bake, uncovered, for 30 minutes and then broil for a few minutes until the top has browned a bit (watch it carefully).
Let it sit for about 5 minutes once you take it out of the oven. I recommend using a spatula to "cut" the pasta like you would lasagna so it's easier to eat and everyone gets some melted cheese on top of their portion.