Place the beef cubes in a medium bowl and add all the marinade ingredients. Stir to combine, ensuring all of the cubes are evenly covered. Cover the bowl tightly with plastic wrap and place it in the fridge to marinate for at least 30 minutes, or up to overnight.
Once the beef is done marinating, remove it from the fridge and let it sit at room temperature for 10 minutes.
Place the oil in a large wok or medium-sized pot over high heat. Add the tomatoes, ginger, garlic, and shallot, and lightly brown, 1–2 minutes.
Stir in the tomato paste. Cook for 1 minute and then add the beef, lemongrass, cinnamon stalk, and star anise. Cook, stirring regularly, until the meat is browned on all sides, 2–3 minutes in total.
Stir in the water and bring to a boil. Once the water begins to boil, turn the heat to medium-low, cover the pot, and let the stew cook for 40 minutes. Stir it occasionally to ensure all sides of the beef are submerged in the water mixture at some point so that they cook evenly. After 40 minutes, the beef should be about 50–60 percent tender, but not fully cooked.
Add the carrots and cook the stew, still on medium-low heat and covered, until the beef and carrots are tender and cooked through, 40 minutes. By this point the meat should have passed the recommended internal temperature of 160°F (71°C). While it’s cooking, stir every 5 to 10 minutes to ensure the stew does not stick to the bottom of the pot. If needed, you can turn the heat to low so that it does not stick.
Add the seasoning, salt, and sugar. Stir to combine. Adjust the seasoning to taste.
Prior to serving, remove the cinnamon stalk and star anise from the stew.
Serve the stew in individual bowls. Garnish with chopped Thai basil and sliced raw white onions (if using), along with your choice of jasmine rice, rice noodles, or a baguette.