Boil the eggs for 8 minutes, then plunge into cold water, peel and set aside.
Cook the rice according to the packet instructions.
Heat the oil in a frying pan and cook the onion for 5 to 6 minutes until soft and golden at the edges.
Add the garlic and ginger and cook for 1 minute, then add the turmeric, cumin, coriander and chilli flakes. Stir for 30 seconds until fragrant.
Pour in the chopped tomatoes and tomato puree, season with salt, and simmer for 10 minutes until the sauce thickens.
Prick the eggs all over with a fork, then gently fold them into the sauce. Sprinkle over the garam masala and simmer for 5 more minutes so the eggs soak up the flavour.
Serve with the rice.