Saute the onions and garlic. Melt the butter in a dutch oven or soup pot over medium heat. Once the butter is melted and foamy, add the diced onion and garlic and stir well. Cook for 3-4 minutes, stirring occasionally, until the onions are soft. Add the crushed red pepper flakes and cook for 1 minute more.
Cook the tomato paste. Add the tomato paste to the pot and stir really well until the tomato paste is incorporated into the onions. Cook for another 4-5 minutes until the tomato paste has darkened in color slightly.
Add the tomatoes and broth. Add the canned tomatoes and juices to the pot and stir well. Break the tomatoes up slightly, season with salt and pepper, and stir in the broth. Add the torn fresh basil leaves. Lower the heat, cover, and simmer for 30 minutes.
Blend. Use an immersion blender or traditional blender and blend the soup until smooth. Transfer back to the soup pot and add the cream and any additional salt and pepper as needed.
Make the croutons. Heat a skillet over medium heat. Spread softened butter on one side of the bread slices. Place two slices of bread in the skillet, top with the shredded cheese, and the other slice of bread with the buttered side up. Cook until golden brown, then flip, and cook until the cheese is melted and the bread is golden brown. Transfer to a cutting board and cut into small squares.
Serve the soup. Ladle the soup into bowls and top with the grilled cheese croutons and a bit more fresh basil, if desired.