Bring balsamic vinegar to a boil in a small saucepan over medium-high heat; cook until reduced to 3 tablespoons (about 8 minutes).
While vinegar reduces, brush cut side of top half of bread with oil. Top evenly with basil, cheese, and tomatoes. Sprinkle evenly with salt and pepper. Brush cut side of bottom half of bread with reduced vinegar; place on top of sandwich. Invert sandwich.
Heat a large grill pan over medium-high heat. Coat the pan with cooking spray. Add sandwich to pan. Place a cast-iron or heavy skillet on top of sandwich, and gently press to flatten. Leave skillet on; cook 3 minutes on each side or until cheese melts and bread is toasted. Cut sandwich into 4 equal pieces.