Heat the vegetable oil in a large pot or Dutch oven over medium heat. Add the chopped onion and sauté until soft and golden, about 5-7 minutes.
Stir in the minced garlic and grated ginger, cooking for an additional 1-2 minutes until fragrant.
Add the curry powder, cumin, coriander, turmeric, and cayenne pepper. Cook for another minute, stirring frequently to toast the spices.
Add the beef cubes to the pot, browning them on all sides for about 5-7 minutes.
Pour in the diced tomatoes (with juice), beef broth, and coconut milk. Stir in the brown sugar and season with salt and pepper.
Bring the mixture to a simmer, then reduce the heat to low. Cover and let it cook for 1.5 to 2 hours, or until the beef is tender. Stir occasionally and add more broth if needed.
Once the beef is tender, taste and adjust the seasoning if necessary. Serve hot over cooked basmati rice and garnish with fresh cilantro.