01 - Pat the beef ribs dry with paper towels and season generously with salt and black pepper on all sides.
02 - Heat the vegetable oil in a large Dutch oven or heavy pot over medium-high heat. Sear the ribs on all sides until deeply golden brown, working in batches if necessary to avoid overcrowding. Transfer seared ribs to a plate and set aside.
03 - Reduce heat to medium. Add onions, garlic, ginger, lemongrass, carrots, celery, and bell pepper to the same pot. Sauté for 5–7 minutes, stirring occasionally, until vegetables have softened and released their fragrant aromas.
04 - Stir in turmeric, coriander, chili flakes, and bay leaves. Cook for 1 minute, stirring constantly, until spices become fragrant and bloom in the hot fat.
05 - Add chopped tomato to the pot and cook for another 2 minutes, stirring occasionally, until tomato begins to break down and release its juices.
06 - Return the seared ribs to the pot, including any accumulated juices. Stir in fish sauce, soy sauce, and palm sugar, ensuring everything is well incorporated.
07 - Pour in coconut milk and beef stock, ensuring the ribs are mostly submerged. Bring the mixture to a gentle simmer, stirring to combine.
08 - Cover the pot with a tight-fitting lid and reduce heat to low. Simmer gently for 2 to 2½ hours, or until the ribs are fall-off-the-bone tender when pierced with a fork. Occasionally skim off any excess fat that rises to the surface.
09 - Taste the ragu and adjust seasoning with additional salt, pepper, or fish sauce as desired. Remove and discard bay leaves before serving.
10 - Ladle the ragu into serving bowls and garnish with fresh cilantro or Thai basil and sliced red chili if using. Serve immediately with steamed jasmine rice or crusty bread to soak up the flavorful sauce.