Blend together the tomatoes, garlic and ginger to a fine paste, using a little water to help; I use a stick blender. Heat the 5 tbsp of oil in a large non-stick saucepan. Add the onion and cook until lightly browned. Add the tomato paste, cashew nuts, spices and salt. Cook over a moderate heat for around 15 minutes, stirring occasionally, until the paste releases oil. Blend until smooth with a stick blender, adding a little water, if necessary, to help. Pour back into the pan, add 500ml water, bring to a boil and simmer for eight to 10 minutes, until the curry is the consistency of single cream.
While the curry is cooking, make the dumplings. Wilt the spinach in a pan with a little water and a good pinch of salt. Once cool enough to handle, squeeze out the excess water and blend to a coarse puree with a stick blender. Add the cornflour and ricotta and stir well.
Heat the oil for deep-frying in a wide sauté pan or a karahi. There should be enough to come 5cm up the sides of the sauté pan, or 10cm up the sides of a small karahi. Test the oil temperature by dropping in a small amount of the spinach mixture; it should sizzle immediately but not colour straight away. Drop heaped teaspoonfuls of the mixture straight into the oil. You may need to do this in batches, so as not to crowd the pan. You should be able to make about 20. Carefully cook them, turning to ensure even cooking; they take about seven or eight minutes and will (unfortunately) turn brown, losing their vivid green colour. Remove and blot off excess oil on kitchen paper.
Once the dumplings are all cooked, place them in the curry and cook for five minutes. Stir in the cream or butter (if using) and serve.