Heat a lidded frying pan over a medium heat and add the ghee or oil. Fry the meat until lightly browned on all sides, then remove from the pan with a slotted spoon, cover and set aside.
Add the onion and garlic to the pan and fry over a low heat until soft. Turn the heat up slightly, add the spices and fry for 1 minute, they should start to smell aromatic, without burning.
Return the beef to the pan, add the tomatoes and bring to the boil. Take the pan off the heat and stir in the yoghurt and vinegar, then season to taste with the salt and the sugar.
Return the pan to the heat, bring back to the boil and simmer, covered, for 1½ hours, or until the meat is tender.
The curry could alternately be cooked in the oven from the end of step 3 onwards: simply preheat the oven to 190C/375F/Gas 5, then pour the contents of the pan into a lidded ovenproof dish and cook for 2 hours with the lid on, until the meat is tender.