Heat 2 tbsps of the oil in a wide saucepan over a medium heat. Add the cinnamon, bay leaf and cardamon and cook for a minute until fragrant.
Add the onions and cook over a medium heat until they are a dark golden brown- this could take up to 30 minutes.
When the onions have browned stir in the ginger and garlic and cook for another two minutes, then add the tinned tomatoes. Mix well, reduce heat to low, cover and cook for 15 minutes.
Add the salt, sugar,coriander, garam masala and turmeric then mix well and cook for a couple of minutes more. Add the coconut milk and the boiling water. Cover and cook for 5-10 minutes until the sauce is slightly thickened.
Meanwhile, boil the eggs in a separate saucepan for 10 minutes then drain and cool under cold running water. Peel the eggs.
Heat the remaining sunflower oil in a frying pan and fry the whole eggs for 2 minutes over a high heat, turning occasionally until golden.
Put the eggs into the sauce and serve hot with rice.