Heat oil in a large heavy-bottomed pot over medium heat. Add diced onions and sauté for 5-7 minutes until they turn light golden brown at the edges.
Add black cardamom, peppercorns, and cloves to the pot. Stir for 30 seconds until fragrant and aromatic.
Stir in chopped tomatoes, minced ginger, minced garlic, salt, red chili powder, turmeric, cumin, and coriander. Cook for 8-10 minutes until tomatoes break down completely and oil begins separating from the masala.
Add ground beef to the pot, breaking apart any clumps with your spoon. Pour in half cup of water, cover, and simmer on medium-low heat for 15 minutes.
Remove the lid and increase heat to medium-high. Fry the beef mixture for 5-6 minutes, stirring occasionally, until excess moisture evaporates and the meat develops a deep, roasted flavor.
Add cubed potatoes along with another half cup of water. Cover and reduce heat to low. Cook for 15-20 minutes until potatoes are fork-tender.
If you prefer drier curry, uncover and cook off any remaining liquid over medium heat. For saucier curry, add quarter cup water and simmer for 2-3 minutes.
Sprinkle garam masala over the curry and stir gently. Top with fresh cilantro, sliced green chilies, julienned ginger, and sliced red onions.
Cover the pot and let it sit for 2 minutes off heat to allow the fresh garnishes to infuse their flavors. Serve hot with basmati rice, roti, or naan.