I use my great grandmother's method, slightly updated because of better cheese availability. Lots of butter, grated cheese, cast iron, low heat.
1. Take out butter long before you want to use it so it is soft and spreadable.
2. Generously butter both sides of one slice of sourdough bread and just one side of the second slice.
3. Heat a cast iron skillet over low heat and cook one side of the double-buttered slice until golden.
4. Shred cheese - I usually use a mixture of cheddar, gruyere, and Monterey Jack. Fontina is also nice.
5. Assemble sandwich - lots of cheese in middle, crisp side in, both uncooked buttered sides out.
6. Lightly sprinkle buttered sides with freshly grated Parmesan and press into butter.
7. Cook sandwich over low heat, turning once, until cheese is melted and bread is golden brown and crisp. This takes a while but if your heat is low enough some of the cheese will melt into the bread and you have perfection.