Bring a large pot of generously salted water to a boil and cook the penne until al dente according to package directions (about 9–11 minutes). Before draining, reserve 1 cup of starchy pasta water, then drain the pasta without rinsing.
Pat the chicken pieces dry, then toss with salt, pepper, Italian seasoning, garlic powder, and onion powder. Heat 2 tablespoons of olive oil in a large skillet over medium-high heat and sear the chicken in a single layer for 4–5 minutes per side until golden and cooked through (165°F / 74°C), then transfer to a plate.
Reduce the heat to medium, add the remaining 1 tablespoon of olive oil to the same skillet, then add the minced garlic and stir constantly for 30–60 seconds until fragrant and just golden — do not let it burn.
Pour in the chicken broth and scrape up any browned bits from the pan, then let it simmer for 1–2 minutes. Add the heavy cream, bring to a gentle simmer over medium heat, and cook for 3–4 minutes, stirring occasionally, until the sauce thickens and coats a spoon.
Reduce heat to low and stir in the grated parmesan a handful at a time until fully melted, then add the red pepper flakes if using. Add the baby spinach in batches, stirring gently after each addition until fully wilted, about 1–2 minutes.
Return the chicken to the skillet, add the drained pasta, and toss everything together with tongs until well coated, adding reserved pasta water a few tablespoons at a time if needed to loosen the sauce. Serve immediately topped with extra parmesan and fresh parsley or basil.