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.
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.
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. 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.
08 - Ladle stew into bowls. Garnish with cilantro, Thai basil, and sliced chili. Serve with lime wedges and crusty bread or rice noodles.