Add the beans to a large pot and cover with water. Bring to a boil, add the thyme sprigs, and bay leaves, and then reduce heat, cover, and simmer for 1 hour or until the beans are cooked through. Add more water as necessary to keep the beans covered with liquid. Discard the thyme sprigs and bay leaves and then drain and rinse. Set aside.
Prepare Soup Base:
As the beans simmer, prepare the rest of the soup. Add the sliced bacon to a large pot and turn the heat to medium. Cook, stirring often, for 5 minutes or until most of the fat has rendered. Note: The bacon does not need to be completely crispy.
Remove the bacon with a slotted spoon and transfer to a bowl. Drain off all but 1 tablespoon of fat in the pot.
Cook the Vegetables:
Turn the heat on the bacon fat to medium and add the diced onion. Cook, stirring often, until the onion begins to soften. About 5 minutes.
Add the carrots and cook for an additional 5-6 minutes or until the carrots begin to soften.
Add the minced garlic and cook for 45 seconds or until fragrant.
Finish the Soup:
Pour in the chicken stock and scrape up any browned bits stuck to the bottom. Next, add the diced tomatoes and the drained beans. Bring to a boil and then reduce heat to low and add the cooked bacon. Season to taste with salt, pepper, and crushed red pepper if desired.