Preheat an outdoor grill for medium-high heat and lightly oil the grate.
Grill bratwursts until cooked through, about 5 minutes per side. Cool. Slice each bratwurst into 1/4-inch pieces.
Heat olive oil in a large pot over medium-high heat. Cook and stir onion, carrots, and celery in hot oil until onions are tender, 5 to 8 minutes. Stir garlic into onion mixture and cook until garlic is fragrant, 1 minute.
Stir chicken broth, tomatoes, sliced bratwurst, basil, parsley, thyme, and cayenne pepper into onion mixture. Bring to a boil, reduce heat to low, cover, and simmer for 20 minutes.
Mix potatoes into bratwurst mixture, bring to a boil, reduce heat to low and simmer until potatoes are almost cooked through, 15 minutes.
Stir beans and spinach into pot; simmer until heated through and potatoes are done, 5 to 10 minutes.