In a bowl, mix the beef with all the marinating ingredients. Cover and keep overnight in the fridge.
Heat the cooking oil in a thick-bottomed pan.
Scrape the beef (reserve the marinade) and brown in the hot oil in batches. Move to a plate as each batch browns.
In the remaining oil (plus the rendered fat from the beef) over medium-low heat, saute the shallots until softened and lightly caramelized.
Add the reserved marinade and continue sauteeing until the mixture is almost dry.
Pour in the tomato puree and cook until thick and lumpy.
Add the browned beef, and star anise.
Pour in two cups of beef broth.
Simmer the beef for two hours (the actual cooking time depends on the quality of the meat) or until tender. Taste occasionally and add more fish sauce, if needed. If the stew dries out before the beef is done, add more broth, no more than a quarter cup each time to prevent the dish from turning soupy.
Add the carrot. Continue cooking until the vegetables are done.
Serve the Vietnamese beef stew, garnished with Thai basil, over rice or noodles, or with crusty bread.