2 tablespoons peanut or vegetable oil
1 large shallot, finely chopped
1/2 yellow onion, chopped
2 tablespoons grated fresh ginger
2 cloves garlic, finely chopped
1 red chile, stemmed, seeded and chopped
1 red Thai bird chile, stemmed, seeded and chopped
7 ounces beef chuck roast or boneless shin, chopped into 1/2-inch pieces
1 quart vegetable or beef stock
4 ounces dried flat udon noodles
1 small carrot, chopped
2 teaspoons light brown sugar
1 teaspoon chili bean sauce, plus more as needed
1 teaspoon dark soy sauce
1 teaspoon cornstarch mixed with 2 teaspoons water
1 small Romaine lettuce heart, sliced into 1/2-inch ribbons
2 scallions, chopped
Small handful fresh cilantro leaves, chopped
Heat the oil in a large saucepan over medium heat. Add the shallots and onions and cook until softened, 3 to 4 minutes, and then stir in the ginger, garlic and chiles and cook, stirring, for about 1 minute. Add the beef and stir-fry until it begins to brown, and then pour in the vegetable stock and bring to a boil. Reduce the heat to a simmer, cover and cook until the meat is very tender, 1 hour 15 minutes to 1 hour 30 minutes.
Meanwhile, bring a large pot of water to a boil and cook the udon according to package instructions. Drain and rinse under cold water. Set aside
Add the carrots to the simmering soup, cover, and cook until crisp-tender, 6 to 8 minutes. Whisk together the sugar, bean sauce and soy sauce in a small bowl until the sugar is dissolved and stir it into the soup. While stirring, pour the cornstarch slurry into the soup and cook until thickened, about 1 minute.
Just before serving, divide the noodles between 2 bowls. Stir the Romaine into the broth and ladle the hot soup over each bowl. Garnish with chopped scallions and cilantro and serve immediately.