In a large pot, heat the vegetable oil over medium heat. Add the chopped onion and sauté until translucent, about 5 minutes.
Add the beef cubes to the pot and brown them on all sides, about 7-10 minutes.
Stir in the minced garlic, ground coriander, ground cumin, paprika, black pepper, and chili flakes (if using). Cook for an additional 2 minutes, stirring frequently.
Add the diced tomatoes and tomato paste to the pot, mixing well with the beef and spices.
Pour in the beef broth and water, bringing the mixture to a boil. Reduce the heat to low and let it simmer for about 30 minutes, skimming off any foam that rises to the top.
After 30 minutes, add the uncooked rice to the pot. Continue to simmer for an additional 15-20 minutes, or until the rice is tender and the beef is cooked through.
Taste the soup and adjust the salt if needed. Once cooked, remove from heat.
Serve the soup hot in bowls, garnished with fresh parsley and cilantro. Add a dollop of sour cream if desired.