Start by marinating the shrimp. In a bowl, combine the shrimp with minced garlic, grated ginger, salt, turmeric powder, and red chili powder or paprika. Add the lemon juice and toss everything together. Let it marinate for about 15 minutes while you prepare the other ingredients.
In a large skillet, heat the oil over medium heat. Add the diced red onion and sauté until translucent and fragrant, about 5 minutes. Stir in the minced garlic and grated ginger, cooking for an additional minute.
Add the diced tomatoes to the skillet, stirring well. Continue to cook until the tomatoes soften, about 5-7 minutes. Then, add the cashews, red chili powder or paprika, garam masala, and sugar. Mix everything together and allow it to cook for another 2 minutes.
Now, add the marinated shrimp to the skillet. Cook until the shrimp turns pink and opaque, about 3-4 minutes. Be careful not to overcook the shrimp, as they can become tough.
Pour in the water to thin out the sauce if needed, then stir in the heavy cream. Let it simmer for a few minutes until everything is heated through. Taste and adjust the seasoning with salt as needed.
Remove the skillet from the heat and garnish your Indian Butter Shrimp with fresh cilantro. Serve it hot with steamed basmati rice, naan, or your favorite flatbread to soak up the delicious sauce.