Cook the spaghetti in a large pot of boiling, salted water to just al dente (should still have a good “bite” to it). Drain and set aside.
Meanwhile, in a large saute pan or skillet, melt butter over medium low heat. Add onions and cook for 1 minute, then add minced garlic and cook 1 more minute. Add flour to the pan, and whisk together to make a roux. Cook until golden; 1-2 minutes. Add the chicken broth and milk, and whisk together to smooth out the lumps. Bring to a simmer and continue cooking until the mixture thickens; 2-3 minutes. Remove from heat. Season with salt and pepper. *If the mixture is too thick, whisk in a little chicken broth or milk to thin it out a little bit.
To the chicken broth mixture, stir in sour cream, 1 1/2 cups of mozzarella cheese and 1/2 cup Parmesan cheese. Add the cooked spaghetti, chicken, peas and bacon (reserve a small handful of the bacon for topping if desired) to the mixture and toss to combine and coat well.
Sprinkle the remaining ½ cup of Mozzarella on top of the spaghetti. Top with remaining bacon.
Bake in the preheated oven for 15-20 minutes or until golden and bubbly.
Let stand for 10 minutes before serving.
Garnish with fresh minced parsley.
If you have leftover chicken, this is a great way to use it up. If you need to cook some up real quick, you can bake it, poach it, or cook it in the instant pot.
Variations. I wanted this recipe to be a full meal, so I added peas. But if you’re not a fan you could leave those out and just serve a salad on the side. Or add spinach, kale, broccoli, asparagus or tomatoes.
Store leftovers in an airtight container in the fridge for 3-4 days. Reheat gently in the microwave.