Melt butter over medium heat in a Dutch oven or large saucepan. Add onion wedges, water, can of tomatoes with their juices, and the salt. Bring to a simmer. Cook, uncovered, for about 40 minutes. Stir occasionally and add additional salt as needed.
Blend the soup - it doesn't need to be ultra-smooth, some texture is a nice touch. An immersion blender makes quick work of this or use a blender. If you use a regular blender, it is best to blend in batches and not fill the blender as much as you usually would since the soup is so hot. We like to remove the center insert of the lid and cover it with a kitchen towel while blending - this helps some of the steam release and prevents the lid from popping off (which can be a big, hot mess).
Blend the butter with the parsley, Parmesan, garlic, and pepper until well combined. Spread the butter mixture evenly over one side of each slice of bread. Place a slice of Cheddar, on the unbuttered side, of 2 slices of bread. Toss the mozzarella with the Gruyere and sprinkle over the Cheddar. Cap the sandwiches with the remaining bread, buttered-side-out.
Cook each side until the cheese is melted and the bread is toasted.
Tips: The combination possibilities for this sandwich are endless! Add bacon, ham, salami, turkey, tomato, basil, sage or roasted red peppers. Substitute any combination of favorite cheeses for those suggested in the recipe. Serve this sandwich with a hot bowl of soup for a warming lunch or light supper.