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 garlic, 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 vegetable mixture, stirring constantly for 2–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 until slightly thickened.
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 season with salt and black pepper to taste. Simmer gently for another 5 minutes to allow flavors to meld.
09 - Use an immersion blender to purée the soup to your desired consistency, whether completely smooth or with some texture remaining.
10 - Butter one side of each bread slice generously. Place 4 slices butter-side down in a skillet over medium heat.
11 - Divide sharp cheddar and Monterey Jack cheeses evenly among the bread slices in the skillet. Top with remaining bread slices, butter-side up.
12 - Cook grilled cheese for 2–3 minutes per side until golden brown and crispy, with cheese completely melted inside.
13 - Remove sandwiches from heat and cut each into 4 strips for dipping. Ladle hot soup into bowls, garnish with green onions and bacon crumbles, and serve with dippers alongside.