01 - Bring a large pot of salted water to a boil. Cook the penne pasta according to package instructions until al dente; drain and set aside, reserving 1/2 cup of pasta cooking water.
02 - While the pasta cooks, heat olive oil and butter in a large skillet over medium heat. Add chopped onion and sauté for 2 minutes, until softened. Add garlic and cook for 1 minute more.
03 - Cut the salmon into bite-sized pieces, season with salt and pepper, and add to the skillet. Sauté gently until the salmon is just cooked through, about 3–4 minutes. Remove salmon to a plate.
04 - Pour the heavy cream into the skillet and bring to a gentle simmer. Stir in Parmesan, lemon zest, and juice. Season with salt and pepper.
05 - Add drained penne and baby spinach (if using) to the sauce. Toss well, adding reserved pasta water as needed for a silky consistency.
06 - Return salmon to the skillet and gently fold to combine. Remove from heat. Sprinkle with chopped dill or parsley. Serve immediately.