Heat coconut oil in a large pot over medium-high heat. Season beef with salt, brown in batches, 3–4 minutes per side. Set aside.
In the same pot, sauté onion 5 minutes until softened.
Add garlic and ginger, cook 1 minute.
Stir in curry powder and cardamom, cook 1 minute until fragrant.
Add tomatoes, cook 5 minutes until broken down, scraping up any browned bits.
Pour in coconut milk and broth, bring to a simmer.
Return beef to the pot, cover, and simmer 1 hour to 1 hour 15 minutes until beef is fork-tender.
Season with salt, top with cilantro, and serve hot.