Put the lentils and water into a pan, stir well and bring to the boil. Skim off any froth that forms on the surface of the water with a spoon. Cover the pan with a lid and reduce the heat to a simmer. Simmer, stirring regularly, for 35 to 40 minutes, or until the lentils are just tender, adding more water as necessary.
When the lentils have cooked through, remove the pan from the heat, and use a whisk to break down the lentils. Set the mixture aside to thicken and cool.
Meanwhile, heat the oil in a pan over a medium heat. Add the cumin seeds, and fry for 20 to 30 seconds, or until fragrant. Add the onion, chiles, and ginger, and fry for 4 to 5 minutes, or until golden brown.
Blend the garlic and tomatoes to a puree in a food processor. Add the puree to the pan, and stir well to combine. Add the turmeric, garam masala, coriander, and 3 1/2 ounces of water to the pan, and stir well to combine. Season the mixture with salt, to taste, and simmer over a medium heat for 15 to 20 minutes, or until the oil from the sauce has risen to the surface of the sauce.
Add the cooked lentils to the sauce, and stir well, adding more water as necessary, to loosen the mixture. Bring the mixture to a boil, and season, to taste, with salt, and freshly ground black pepper. Stir in the chopped cilantro just before serving.
If this dish is not sour enough for you, add a squeeze of lemon juice. If you are a garlic lover, you can add another 2 cloves of garlic. Plum tomatoes are too sweet for this recipe. You need to use well-flavored vine tomatoes or even just supermarket tomatoes, which I normally find too sour for salads.