Heat the oil in a pot and brown the ground beef for 6–7 minutes. Transfer to a bowl and set aside.
Finely chop the onions, and grate the garlic and ginger.
Add butter and a bit more oil to the pot, then add the onions. Sauté over medium heat for about 6 minutes.
Meanwhile, dice the potatoes into 1x1 cm cubes and chop the tomatoes.
Once the onions are nearly done, stir in the garlic and ginger. Cook for 1 minute.
Add the potatoes, cumin seeds, coriander seeds, cinnamon stick, and salt. Cook until the spices are aromatic.
Return the browned beef to the pot. Stir in the tomatoes, tomato paste, turmeric, and garam masala. Pour in the water and cover with a lid.
Let simmer for 25 minutes until the potatoes are tender.
Taste and adjust with extra salt or chili if desired. Simmer uncovered for 5 minutes to thicken the sauce.
Garnish with fresh coriander if using, and serve with naan, salad, or raita.