Heat the olive oil (2 tablespoons) in a large pot or dutch oven over medium-high heat. Add the sausage and cook for about 5 minutes, until heated through and browned.
Add the onion; cook until softened and starting to brown, about 3 minutes.
Add the garlic and stir. Cook until fragrant, about 30 seconds.
Add the chicken stock (3 cups) and the frozen spinach (no need to defrost it). Bring to a boil.
Add the farfalle pasta to the pot and stir. Turn the heat to low and cover, simmering for 10-12 minutes, stirring occasionally so it doesn't stick together, or until pasta is cooked al dente.
Uncover and stir in the grated parmesan cheese (1/2 cup) and heavy cream (1/2 cup). Continue stirring until the cheese has melted and the sauce is thickened. Turn off heat.
Season to taste with kosher salt and black pepper. Serve topped with more parmesan cheese and fresh cracked pepper, if desired.
Money saving tip: If you don't have heavy cream and don't want to buy it, milk can be used as a substitute.
While I haven't tried this with any other pasta shape, I do think you can substitute rotini, penne, or a pasta shape of a similar size and density for the farfalle. Something like spaghetti might not do as well with this timing and liquid amounts, since it's smaller and may require less liquid.
I recommend using chopped frozen spinach, since there's a LOT in there and you can add it directly to the water in the beginning, and it's cheap! However, if you want to use fresh spinach, I recommend using baby spinach and adding two large handfuls to the pot right before you add the cream and cheese, to allow the leaves to wilt. You won't need to cook it for very long!
The provided nutrition information does not include any added sodium from seasoning to taste, any optional ingredients, and it does not take brands into account. Feel free to calculate it yourself using this calculator or by adding the recipe to Yummly.