Heat 1 tablespoon oil in a skillet over medium heat. Stir in onions; cook and stir until onion pieces are soft and translucent, about 5 minutes. Reduce heat to medium-low; continue cooking, stirring occasionally, until onions are golden, about 10 minutes more.
Remove pan from heat and set it aside. Transfer cooked onions to the bowl of a food processor; grind onions, tomatoes, and green chiles into a smooth paste.
Heat remaining 2 tablespoons oil in the same skillet over medium heat. Add onion mixture carefully, as it may spatter. Cook and stir for 2 to 3 minutes. Stir in garlic paste, ginger paste, coriander, cumin, garam masala, turmeric, cayenne pepper, and salt. Cook and stir until the oil begins to separate from the mixture, about 5 minutes.
Pour water into skillet and bring sauce to a boil. Add cubed potatoes. Gently stir in the eggs. Reduce heat to low and simmer until sauce has thickened slightly, about 10 minutes. Remove from heat. Garnish with cilantro before serving.