Heat oil in a large pot or Dutch oven over medium-high heat. Sear beef in batches until browned. Remove and set aside.
- In the same pot, add more oil if needed. Sauté onions until golden, then add garlic and ginger. Cook for 1 minute.
- Add curry powder, cumin, turmeric, paprika, and chili flakes. Stir for 1–2 minutes to toast the spices.
- Stir in tomato paste. Return the seared beef to the pot. Add coconut milk and enough broth to just cover the beef. Season with salt and pepper.
- Bring to a simmer. Cover and cook on low for 1.5 to 2 hours, stirring occasionally, until beef is fork-tender and sauce is thickened.
- Meanwhile, rinse rice until water runs clear. Combine rice, water, and salt in a pot. Bring to a boil, then reduce to low, cover, and simmer for 15 minutes. Remove from heat and let rest for 5 minutes. Fluff with a fork.
- Spoon beef curry over steamed rice and garnish with chopped cilantro. Serve hot.