Melt butter in a large soup pot and sweat onions on low heat for 6 minutes. Cover the pot and stir occasionally.
Add flour and stir for 1 minute making sure the flour doesn't brown. Pull away from burner or turn off heat if needed.
Add tomatoes with juices, tomato paste, milk, chicken stock, carrots, sugar, and bay leaves. Bring to a boil and reduce heat to low. Simmer for 30 minutes stirring occasionally.
Puree soup in the pot with a hand-held blender. If you want really smooth soup, strain before serving.