Heat olive oil in a large skillet over medium heat. Add chopped onion and sauté for 4-5 minutes until softened and lightly golden.
- Stir in garlic and grated ginger, cooking for 1-2 minutes until fragrant.
- Sprinkle in turmeric, cumin, garam masala, ground coriander, and red chili powder (if using). Stir well and let cook for another minute to release the flavors.
- Pour in diced tomatoes and cook for 5 minutes, allowing them to break down and thicken slightly.
- Add butter beans and coconut milk (if using) to the pan. Stir to combine, and let the curry simmer for 10-15 minutes, allowing the flavors to meld and beans to absorb the curry sauce.
- Season with salt and pepper to taste. If desired, add more coconut milk or a splash of water to adjust consistency.
- Serve the curry over rice or with naan bread. Garnish with freshly chopped cilantro.