01 - Pat the beef ribs dry with paper towels and season generously with salt and black pepper on all sides.
02 - Heat 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 browned 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 to 7 minutes, stirring occasionally, until vegetables are softened and fragrant.
04 - Stir in turmeric, coriander, chili flakes, and bay leaves. Cook for 1 minute, stirring constantly, until spices are fragrant.
05 - Add chopped tomato and cook for another 2 minutes until it begins to break down and release its juices.
06 - Return the browned ribs to the pot. Stir in fish sauce, soy sauce, and palm sugar, ensuring the ribs are evenly coated.
07 - Pour in coconut milk and beef stock, ensuring the ribs are mostly submerged. Bring the mixture to a gentle simmer.
08 - Cover the pot and simmer over low heat for 2 to 2.5 hours, or until the meat is fall-off-the-bone tender. Occasionally skim off any excess fat that rises to the surface.
09 - Adjust seasoning with additional salt, pepper, or fish sauce as desired. Remove and discard bay leaves before serving.
10 - Garnish with fresh cilantro, Thai basil, and sliced red chili if desired. Serve hot over steamed jasmine rice or with crusty bread.