Heat the oil in a large skillet or sauté pan over medium heat.
Add the chopped onions and cook until softened and lightly golden.
Stir in the minced garlic and grated ginger and cook briefly until fragrant.
Add the chopped tomatoes and cook until softened and beginning to break down.
Stir in the curry powder or garam masala and cook for about 30 seconds.
Add the cubed chicken and cook, stirring, until the outside is no longer raw.
Season with the salt and black pepper.
Pour in the water and simmer for a few minutes.
Add the coconut milk and optional garam masala, then stir until combined.
Simmer gently until the chicken is fully cooked and the sauce is creamy.
Stir in the chopped coriander and serve hot.