01 - Heat butter and olive oil in a large pot or Dutch oven over medium heat. Add chopped onion and sauté until translucent, about 4 minutes.
02 - Add minced garlic, diced jalapeños, and red bell pepper to the pot. Cook for 5 minutes, stirring occasionally, until vegetables are softened.
03 - Stir in smoked paprika, cumin, and cayenne pepper. Cook for 1 minute until fragrant, being careful not to burn the spices.
04 - Sprinkle flour over the vegetables, stirring constantly for 2 to 3 minutes to cook out the raw flour taste and create a roux base.
05 - Gradually pour in vegetable broth while whisking constantly to prevent lumps. Bring to a simmer and cook for 10 minutes to thicken.
06 - Add cubed cream cheese to the simmering soup, stirring continuously until completely melted and incorporated into the broth.
07 - Stir in shredded sharp cheddar and Monterey Jack cheeses one handful at a time, allowing each addition to melt before adding more.
08 - Pour in whole milk and stir to combine. Season generously with salt and black pepper to taste. Simmer gently for another 5 minutes.
09 - Use an immersion blender to puree the soup to your desired consistency, whether completely smooth or slightly chunky for texture.
10 - Butter one side of each bread slice generously. Place 4 slices butter-side down on a cutting board.
11 - Divide shredded sharp cheddar and Monterey Jack cheeses evenly among the 4 bread slices. Top with remaining bread slices, butter-side up.
12 - Cook sandwiches in a skillet over medium heat for 2 to 3 minutes per side until golden brown and cheese is completely melted.
13 - Remove grilled cheese from skillet and cut each sandwich into 4 strips for easy dipping.
14 - Ladle hot soup into bowls. Garnish with sliced green onions and crumbled bacon if using. Serve immediately with grilled cheese dippers on the side.