How to Make It
Toss together beef, lemongrass, fish sauce, brown sugar, and five-spice in a large bowl. Let beef marinate at room temperature 30 minutes.
Heat a Dutch oven over high until very hot; add 1 tablespoon oil. Remove one-third of beef from marinade, and add to Dutch oven. Cook, stirring often, until lightly browned on 2 to 3 sides, 2 to 3 minutes. Transfer seared beef to a plate. Repeat process twice with 2 tablespoons oil and remaining beef, reserving marinade in bowl. (If there is excessive browning on bottom of Dutch oven, reduce heat to medium.)
Reduce heat to medium-low. Add shallots, ginger, garlic, and remaining 1 tablespoon oil; cook, stirring often, until fragrant, 3 to 4 minutes. Stir in tomatoes, star anise, bay leaf, and salt. Bring mixture to a simmer; cover and cook, stirring occasionally, until mixture reduces and thickens slightly, 12 to 14 minutes.
Return beef and accumulated juices on plate to Dutch oven; stir in reserved beef marinade. Cook, stirring often, until tomato mixture thickens and coats beef, about 5 minutes. Stir in 5 cups water; bring to a boil over high. Reduce heat to low; cover and simmer until beef yields slightly when pierced with a knife, about 1 hour and 15 minutes.
Skim and discard fat from surface of stew. Stir carrots into stew; bring to a boil over high. Reduce heat to low; simmer, uncovered, until beef and carrots are tender and sauce has thickened and coats the back of a spoon, about 45 minutes. Remove from heat; let stand, uncovered, 5 to 10 minutes.
Taste stew; if needed, add more fish sauce or salt to intensify flavor, or add a few splashes of water to lighten flavors. Remove and discard lemongrass, star anise, and bay leaf. Divide stew among shallow bowls; sprinkle with cilantro.