In a 5-quart soup pot or Dutch oven, heat olive oil over medium heat until shimmering. Add sausage and cook, stirring to break up the meat and scraping bottom of pot, until well browned, 6 to 8 minutes. Using a slotted spoon, remove sausage from pot; set aside. If meat has rendered an excessive amount of fat, use a metal or other heat-safe spoon to ladle most of it out, leaving 2 to 3 tablespoons in the pot. (If, conversely, you have less than about 2 tablespoons of fat left, add extra olive oil.) Add onion, garlic, celery, carrot, fennel, fennel seeds, and crushed red pepper flakes (if using), and cook, stirring and scraping bottom of pot, until vegetables are softened and release some moisture, about 8 minutes.
Add tomato paste, stirring to coat vegetables evenly, and cook until paste is a dark red, about 3 minutes. Sprinkle flour over vegetables and cook, stirring frequently, until evenly coated and flour begins to stick to bottom, about 2 minutes.
Slowly pour in stock or broth, stirring until flour is fully incorporated. Bring to a boil over medium-high heat. Add kale and return sausage to soup; reduce heat to a simmer until kale is tender and flavors meld, 8 to 10 minutes.
Meanwhile: Bring a medium saucepan of salted water to a boil. Add tortellini and cook, stirring, until just shy of al dente, about 2 minutes less than package instructions. Using a colander, drain tortellini; set aside.
Remove soup from heat. Add heavy cream gradually, stirring to combine, followed by the tortellini. Season to taste with salt and pepper as needed.
Divide into bowls and top with pesto and Parmigiano-Reggiano, if using. Serve immediately to prevent tortellini from overcooking.
