Bring a large pot of salted water to boil. Cook spaghetti according to package directions until al dente. Reserve 1 cup pasta water before draining.
While pasta cooks, season shrimp with salt, garlic powder, and onion powder.
In a large skillet over medium-high heat, melt 2 tablespoons butter. Add seasoned shrimp and cook for 2 minutes per side until pink. Remove shrimp and set aside.
To the same skillet, add diced onion and cook for 3-4 minutes until softened.
In the same pan, add remaining butter and whisk in flour. Cook for 1 minute, then slowly pour in white wine, scraping up any browned bits.
Gradually whisk in cream and bring to a gentle simmer. Add lemon zest and half the lemon juice.
Add cooked pasta to the sauce with 1/2 cup pasta water. Toss in spinach and Parmesan. Add more pasta water if needed for consistency.
Taste and adjust with remaining lemon juice and salt. Top with cooked shrimp and serve immediately with extra Parmesan!