Heat oil over medium heat. Add onion and carrots and cook until soft, about 10 minutes, stirring occasionally.
Add the tomato paste, and cook until the tomato paste is browned and beginning to stick to the pot, about 5 minutes, stirring often. Stir in the garlic and cook until fragrant, about 1 minute.
Stir in tomatoes, sugar, tomato paste, basil, chicken stock, salt, pepper, and baking soda. Bring to a boil and simmer for 30-40 minutes. Note that when you add the baking soda, the mixture will froth and there will be a layer of foam on the top of the soup. Don't worry, this is normal.
Remove from heat. Puree using an immersion blender (carefully). Strain the soup, using a fine mesh strainer, stirring and pressing pulp against the mesh to remove all liquid. Discard pulp (see note).
Stir in evaporated milk. Return to medium heat to reheat. Serve with extra basil to garnish, and with croutons if desired.
Notes
Straining is optional, but without straining, the soup is very seedy with pieces of tomato skin.