01 - Combine beef with fish sauce, soy sauce, sugar, black pepper, garlic, and shallots in a large bowl. Marinate for at least 30 minutes, or up to 2 hours in the refrigerator for best flavor development.
02 - Heat vegetable oil in a large Dutch oven or heavy-bottomed pot over medium-high heat. Sear the marinated beef in batches until browned on all sides. Remove and set aside.
03 - In the same pot, add onions and cook until softened, about 3 minutes. Stir in tomato paste and cook for 1 minute to develop flavor.
04 - Add lemongrass, star anise, cinnamon stick, and bay leaves. Return beef to the pot and toss to coat with aromatics.
05 - Pour in beef stock or water, scraping up any browned bits from the bottom. Bring to a boil, then reduce heat to low, cover, and simmer for 1.5 hours.
06 - Add carrots and continue to simmer, uncovered, for another 30–40 minutes, until beef is fork-tender and sauce is slightly thickened. Skim off excess fat as needed.
07 - Adjust seasoning with extra fish sauce or salt to taste. Remove lemongrass, star anise, cinnamon, and bay leaves before serving. Ladle stew into bowls and garnish with cilantro, Thai basil, and sliced chili. Serve with lime wedges and crusty bread or rice noodles.