Saute carrots, celery, and onion in olive oil until soft but not brown. Two-thirds of the way though the saute, add the garlic. (It doesn't need to saute as long as the other vegetables.)
Add beans, tomatoes, and stock. The beans should be drained but not rinsed. No need to go crazy with the draining -- just dump off any excess liquid that's at the top of the can.
Add cumin, cholula, oregano, thyme, pepper, and salt.
Simmer over medium-low heat for two hours or so, stirring occasionally, until the soup thickens slightly and the flavors come together.