Crumble and cook the Italian sausage in a large soup pot set over medium heat until browned and cooked. Once cooked, drain all the grease, leaving about a tablespoon in the pot.
Add the butter and cook the onion, celery, and carrots until softened, about 10 minutes.
Add the minced garlic, dried thyme, basil, salt, black pepper, and dried fennel. Stir continuously until the garlic is fragrant, about 30 seconds. Stir in the tomatoes and cook until softened, about three minutes.
Optional: Add a generous splash of dry white wine (Pinto Grigio, Sauvignon Blanc, or Chardonnay). Bring to a gentle simmer and cook until reduced by half.
Stir in the broth and increase the heat to high. Once boiling, cover and reduce the heat to low, maintaining a steady simmer for 20 minutes.
Carefully add the gnocchi and cook for 2-3 minutes, then slowly add the heavy cream. Simmer gently for 2-3 minutes (by this time, the gnocchi should be floating at the surface of the soup).
Stir in the spinach and simmer for 2-3 minutes or until the spinach is wilted.
This soup is best served hot with grated parmesan cheese, hot sauce, and fresh basil if desired.