Dice the onion, carrots, and celery into even 1/4-inch pieces. Mince the garlic, grate the Parmesan, and measure out all seasonings and the flour into small bowls. Open the tomatoes but do not drain them.
Warm a Dutch oven over medium-high heat. Add the sausage, breaking it into small crumbles, and cook for 6 to 8 minutes until browned with no pink remaining. Spoon off all but about 1 tablespoon of the fat.
Reduce the heat to medium and add the butter, onion, carrots, and celery. Cook for 5 to 6 minutes, stirring often, until the onion is soft and translucent, scraping up the browned bits from the bottom.
Add the garlic, Italian seasoning, and red pepper flakes and stir for about 1 minute until fragrant. Sprinkle the flour over the mixture and stir for 1 full minute to cook off the raw flour taste.
Pour in the broth slowly, about 1 cup at a time, stirring well after each addition so the flour dissolves without lumps. Add the undrained tomatoes, salt, and pepper, then bring to a gentle boil. Reduce heat to medium-low and simmer uncovered for 10 minutes.
Add the gnocchi straight from the package and stir gently so it does not stick together. Simmer for 3 to 4 minutes, until the gnocchi floats to the surface and feels tender.
Turn the heat down to low and pour in the heavy cream, stirring until smooth. Add the baby spinach by the handful and stir until wilted, about 1 to 2 minutes. Stir in the grated Parmigiano-Reggiano until melted.
Taste and adjust salt and pepper as needed. Ladle into warm bowls and top with extra grated Parmesan and a pinch of red pepper flakes if you like heat. Serve right away.