In a large Dutch oven, heat olive oil over medium-high heat. Add the onions, garlic, salt, black pepper and red pepper flakes, cook until softened, about 1 to 2 minutes. Add the broth, diced tomatoes with liquid, tomato sauce, Parmesan rind and 1/4 cup of the basil and cook, stirring occasionally, for about 30 minutes. Remove the Parmesan rind and puree the soup with an immersion blender until smooth.
In a small saucepan, melt 3 tablespoons of the butter. Whisk in the flour and continue to cook, whisking, until the mixture is lightly browned, 1 to 2 minutes. Add the cream and cook, stirring, until thickened. Add the cream mixture to the soup and cook over medium-low heat, stirring occasionally, until the soup has thickened, about 10 minutes.
Meanwhile, melt the remaining 2 tablespoons butter in a medium skillet over medium heat. Place 2 of the bread slices in the skillet; top each bread slice with 2 cheese slices, 2 tablespoons of the chopped basil and another bread slice. Cook until the bread is golden brown and the cheese is melted, about 3 minutes per side. Cut each sandwich into 9 pieces.
Serve soup topped with the grilled cheese croutons and remaining chopped basil.