Heat the vegetable oil in a large heavy-bottomed pot or Dutch oven over medium-high heat. Season the beef cubes generously with salt and pepper. Add the beef to the pot in batches, browning all sides until a dark crust forms. Remove the beef and set it aside on a plate.
In the same pot, reduce the heat to medium. Add the chopped onions and cook for about 5 to 7 minutes until they are soft and translucent. Stir in the minced garlic and grated ginger, cooking for another minute until the mixture becomes very fragrant.
Add the curry powder, turmeric, and cumin to the onion mixture. Stir constantly for about 1 to 2 minutes. This “blooms” the spices in the oil, releasing their essential oils and intensifying the overall flavor of the curry.
Pour in the beef broth and use a wooden spoon to scrape up any browned bits from the bottom of the pot. Stir in the crushed tomatoes and the browned beef (along with any juices on the plate). Bring the mixture to a gentle boil, then reduce the heat to low. Cover and simmer for 60 minutes.
After the first hour, stir in the cubed potatoes and the coconut milk. The coconut milk adds a beautiful creaminess that balances the heat of the spices. Cover again and continue to simmer for another 45 to 60 minutes, or until the beef is fork-tender and the potatoes are soft.
Remove the lid and let the curry simmer for a few more minutes if you prefer a thicker sauce. Taste and adjust the salt or pepper as needed. Turn off the heat and let the dish rest for five minutes before serving.