En una olla, pon los jitomates, el ajo y el chile ancho. Cúbrelos con agua y ponlos a hervir a fuego medio-alto de 10 a 12 minutos, hasta que los jitomates estén cocidos y muy suaves y el chile se haya rehidratado.
Pasa los jitomates, el ajo y el chile a una licuadora o procesadora junto con 1 taza del agua de cocción, la cebolla blanca y 1 cucharadita de sal. Licúa hasta obtener un puré suave.
En una olla grande, calienta el aceite a fuego medio alto. Añade el puré de tomate y cocina de 6 a 8 minutos, revolviendo ocasionalmente hasta que se espese y tenga un color más oscuro.
Mientras, enjuaga la licuadora o procesadora, añade los frijoles cocidos y 2 tazas de su caldo (o agua, si usas frijoles enlatados), y licúa hasta obtener un puré suave.
Reduce el fuego a medio y agrega los frijoles licuados, el caldo y la 1/2 cucharadita de sal restante al puré de tomate. Hierve de 10 a 15 minutos, o hasta que la sopa se haya sazonado y tenga una consistencia cremosa. Rectifica la sazón y apaga el fuego, ya que la sopa se espesa rápidamente.
Vierte la sopa a los platos con un cucharón y rocía con crema y queso Cotija, tiritas de tortilla, unos pedacitos del chile ancho frito y cubitos de aguacate. También puedes poner los acompañamientos en recipientes pequeños en la mesa y que cada invitado prepare su sopa al gusto.
Puedes dejar enfriar la sopa y guardarla en un recipiente bien tapado en el refrigerador hasta por 4 días. Ya que esta sopa se espesa cuando se enfría, le puedes poner caldo de pollo o agua para diluirla un poco mientras la calientas.