In a medium bowl, combine the shrimp with minced garlic, grated ginger, salt, turmeric powder, red chili powder (or paprika), oil, and lemon juice. Mix well and let it marinate for about 15 minutes.
In a large frying pan over medium heat, melt 2 tablespoons of unsalted butter. Add the diced red onion and sauté for about 3-4 minutes until the onions become translucent. Then, add the minced garlic and grated ginger, cooking for another minute until fragrant.
Next, stir in the diced tomatoes and cashews. Cook for about 5 minutes until the tomatoes break down and become saucy.
Stir in the additional red chili powder (or paprika), garam masala, and sugar. Cook for another 2 minutes.
Add the marinated shrimp to the pan, followed by 1/2 cup of water. Stir everything together, ensuring the shrimp are well-coated in the sauce. Cook for about 5-7 minutes, or until the shrimp are pink and cooked through.
Lower the heat and stir in the heavy cream, mixing until the sauce is smooth and creamy. Adjust salt to taste, and let it simmer for an additional 2-3 minutes.
Once done, remove from heat and garnish with fresh cilantro. Serve your Indian Butter Shrimp over steamed rice or with naan.