Heat the oil in a large saucepan and add the cumin seeds. Fry over a medium heat until they're starting to brown. Add the onion. Cook for a few minutes, stirring well, then turn the heat to low and cover for 10 minutes until softened. Stir halfway.
Turn the heat back to medium, then add the garlic, ginger, herbs and spices. Stir and cook for 2-3 minutes. Add the chopped tomatoes, bring to the boil, then reduce the heat and simmer away for 15-20 minutes. This is a great dish to make in advance by the way because the flavours only get better with time - so make it in the afternoon for dinner, or the day before.
Once the sauce has slightly thickened add the garam masala, salt (if using) and spinach leaves. Heat through until the spinach has wilted then blend the sauce using a stick blender. This last part isn't essential if you don't mind the spinach leaves showing.
Serve with your favourite curry ingredients, rice and/or bread. I usually add 2 potatoes, chopped and boiled, 2 carrots, chopped and boiled and a large handful of peas.