Cook Pasta: Bring a large pot of salted water to a boil. Cook pasta to al dente according to package directions. Before draining, reserve 1 cup of pasta water. Drain and set aside.
Cook Shrimp: Heat 1 tbsp olive oil in a large skillet over medium high heat. Season shrimp with salt and pepper. Cook shrimp for 2-3 minutes per side until pink and opaque. Remove to a plate.
Start Sauce: In the same skillet, heat 1 tbsp oil or butter over medium heat. Add garlic; sauté 1 minute until fragrant.
Make Roux: Sprinkle flour over garlic and cook, stirring, for 1 minute.
Add Liquids: Slowly whisk in chicken stock until smooth. Whisk in warm milk. Bring to a simmer for 1-2 minutes until slightly thickened.
Finish Sauce: Reduce heat to low. Whisk in grated Parmesan, salt, and pepper until melted and smooth. Stir in optional half and half.
Combine: In the large pot or skillet, combine the drained pasta and creamy sauce. Toss, adding reserved pasta water as needed to loosen.
Add Final Ingredients: Gently fold in cooked shrimp, spinach, sun dried tomatoes, and basil. Toss until spinach is wilted.
Serve: Serve immediately, garnished with extra Parmesan and black pepper.