Cook pasta according to package directions in salted water.
In a large skillet over medium high heat, add 2 tbsp butter, shrimp, 1 tbsp of garlic, and lemon juice. Cook until the shrimp are just barely opaque, about 1-2 minutes per side. Remove from pan and set aside.
In the same pan, add in the whole cherry tomatoes and cook for about 5 minutes, or until the tomatoes begin to brown slightly on the outside. Remove and set aside.
In the same pan, add remaining butter and garlic and cook until fragrant, 1-2 minutes.Add in white wine (if using) and chicken stock to deglaze the pan. Bring to a simmer and allow to reduce by half.
Add in heavy cream, parmesan, onion powder, dried basil, salt and pepper to taste. Bring to a simmer and allow the sauce to thicken for about 5 minutes, or until it coats the back of a wooden spoon.
Add the shrimp, tomatoes, and cooked pasta to the pan and stir to combine. Add in the spinach and simmer for another 2-3 minutes until the spinach has wilted (if using fresh).
Serve immediately, topped with additional grated parmesan.