Peel potatoes and prick them in 4 or 5 places. Put them in a bowl of cold water until you are ready to cook them.
Heat 5 Tbsp. of the vegetable oil in a large non-stick pan that can hold all the potatoes in one layer (such as a 5-quart casserole; cast iron Dutch oven is great) over medium-high heat. When the oil is very hot, drain the potatoes, pat them dry on paper towels, and add to pan with oil. Fry them until they acquire several tiny browned spots and a crust (about 8-10 minutes), turning and tossing them to ensure even browning. (This is an essential step, as the browning prevents the potatoes’ falling apart during prolonged cooking.) With a slotted spoon, transfer them to a bowl.
Add the rest of the oil to the pan along with the onions. Fry until the onions turn caramel brown (the onions will become kind of sticky and the oil will separate from them — about 15 minutes), stirring constantly so that they do not burn. Add ginger, and fry for an additional 30 seconds. Add cumin, coriander, turmeric, red pepper, and Mughal garam masala all at once, and stir rapidly for 15 seconds. Add tomatoes, yoghurt, salt, and the fried potatoes (in one layer), and bring to a boil. Reduce heat and simmer very gently, covered (we also crimp some aluminum foil around the lid edges to ensure a good seal), for 35 minutes or until the potatoes are fully cooked. Check during cooking to make sure the gravy is not sticking and burning. The gravy should be thick enough to coat the potatoes. If it looks thin and runny, increase heat and boil rapidly, uncovered, until it reduces to the desired consistency. If, on the other hand, the gravy is too thick, add a few tablespoons of water.
Add cream, stir, and simmer until heated through. If you want the dish to taste milder and subtler, stir in a little more oil (about 2 T). Check for salt, and serve.
Note: This dish improves with keeping. For best results make it at least a few hours before you are going to serve it. It can be refrigerated for up to 4 days without loss of flavor.