In a large sauce pot, heat oil over medium heat. Add onion and cook for 4 minutes. Stir in tomatoes, tomato paste and sugar. Puree mixture in a blender or food processor. If necessary, blend in 2 batches.
Return puree to pot and add milk, vegetable broth, salt and pepper. Cover and simmer over low heat while preparing sandwiches.
Butter one side of each bread slice. On unbuttered side of 1 slice, distribute about 1/4 cup cheese. Top with 2 slices Canadian bacon and another 1/4 cup cheese. Top with another slice of bread, unbuttered side down. Repeat step 3 to make 4 sandwiches.
Place a large grill pan or skillet over medium heat. Place sandwiches in pan and cook until golden, about 5 minutes per side. Cover sandwiches with foil to keep warm.
Just before serving, stir basil into soup and spoon into bowls. Top with sour cream, if desired. Slice each sandwich diagonally and serve alongside soup.