Ingredients
Method
Step 1: Prep Your Chicken (or Plant-Based Protein)
- Start by cutting your chicken breast into rough 1-inch pieces. For vegan versions, drain and rinse 2 cans of chickpeas, pat them dry with paper towels, and set aside. For tofu versions, press your firm tofu block between paper towels for 10 minutes to remove excess moisture, then cut into ¾-inch cubes. The size matters here—smaller pieces cook faster and absorb the sauce better. I always cut my chicken slightly smaller than I think I need because it shrinks as it cooks.

Step 2: Brown Your Protein
- Heat 2 tablespoons of butter (or olive oil for dairy-free) in a deep, 12-inch skillet over medium heat. Once the butter is melted and foaming, add your chicken pieces and let them sit undisturbed for 2–3 minutes. This creates a golden-brown crust that adds serious flavor. Stir occasionally and cook until the chicken is lightly browned on most sides, about 6–8 minutes total. For vegan chickpea versions, cook the chickpeas for about 5 minutes until they start to crisp and brown. For tofu, pan-fry until golden on all sides, about 8–10 minutes.

Step 3: Build Flavor With Garlic
- While your protein is cooking, mince your 2 cloves of garlic very finely—almost to a paste. Once your chicken (or alternative) is nicely browned, add the minced garlic directly to the skillet and stir constantly for exactly 1 minute. This is crucial: garlic burns quickly, and burned garlic tastes bitter. You want it fragrant and golden, not charred. At 60 seconds, your kitchen should smell absolutely incredible.

Step 4: Add Pasta and Broth (The Magic Happens Here)
- Add your uncooked penne directly to the skillet. For gluten-free versions, use your gluten-free pasta at this same ratio. For keto, skip traditional pasta entirely and proceed to Step 5, adding zucchini noodles after the sauce is made. Pour in 1½ cups of chicken broth (or vegetable broth for vegan versions). Use a wooden spoon to stir and scrape up any brown bits stuck to the bottom of the pan—that's pure flavor, and you don't want to leave it behind. Cover the skillet with a lid, increase heat to medium-high, and bring the broth to a rolling boil. This usually takes 4–5 minutes. Once you see bubbles breaking the surface, give the pasta one quick stir, replace the lid immediately, and turn the heat down to medium-low.

Step 5: Simmer Until Pasta Is Tender
- Let the pasta simmer quietly for about 8 minutes, stirring briefly every 2 minutes and replacing the lid each time. What you're looking for is tender pasta that still has a tiny bit of bite and a skillet where most (but not all) of the broth has been absorbed. The pasta will continue to soften slightly as you add the cream sauce, so don't overcook it here. After about 8 minutes, taste a piece of pasta—it should feel soft but still have structure.

Step 6: Make Your Creamy Sauce
- Once the pasta is tender and most of the broth has been absorbed, pour in your milk. For keto versions using heavy cream, use ½ cup cream instead for lower carbs. For dairy-free versions, use coconut milk, oat milk, or cashew cream. Cut your softened cream cheese into small chunks and add it to the skillet. For vegan versions, use vegan cream cheese or ¼ cup tahini instead. For dairy-free versions, use vegan cream cheese or tahini. Stir constantly over medium heat for 3–4 minutes until the cream cheese has completely melted into the sauce and everything is smooth. This is when your dish transforms from simple pasta into something truly creamy and luxurious. Don't rush this step—low heat and patience give you a silky sauce instead of a grainy one.

Step 7: Add Pesto and Final Flavors
- Stir in your ⅓ cup of fresh basil pesto and 2 tablespoons of fresh lemon juice. The lemon juice brightens everything and prevents the sauce from tasting too heavy. Add ¼ cup grated Parmesan cheese—for vegan versions, use ¼ cup nutritional yeast instead, which adds a savory umami note. For dairy-free versions, skip the Parmesan or use nutritional yeast. Stir until everything is fully combined and the sauce is silky and vibrant green.

Step 8: Add Your Vegetables and Final Touch
- Add your 3 cups of fresh spinach and ¼ cup of sliced sun-dried tomatoes. Stir gently until the spinach is completely wilted, about 1–2 minutes. The residual heat will do the work here. Taste and adjust seasoning with salt, freshly cracked black pepper, and a pinch of crushed red pepper flakes if you like heat. Remove from heat immediately. Divide into 4 bowls and serve hot. The pasta continues to absorb sauce as it sits, so if you prefer a saucier dish, add a splash more milk before serving.

