Place onions, chilli peppers, ginger and garlic in a blender with a splash of water. Blend into a smooth paste; season with salt and pepper.
Heat oil in a large, high-sided pan over medium heat. Cook paste until slightly browned, about 5 minutes.
Heat a small pan over medium-low heat. Add Madras curry powder; cook and stir until fragrant, 2 to 3 minutes. Mix into the paste.
Cook and stir chicken in the spice paste mixture until browned, 5 to 10 minutes. Pour in tomatoes. Fill the tomato can halfway with water and pour in too. Simmer over medium-low heat until liquid is reduced, about 50 minutes. Season with salt and pepper. Scatter fresh coriander on top.
Substitute 450g of mixed vegetables or seafood for the chicken, if preferred.