In a large skillet, heat 1 tablespoon of the olive oil over medium-high heat and saute the sausage until golden brown, stirring to break up the pieces, about 6 minutes. Add half of the onions and the eggplant, season with 3/4 teaspoon salt and 1/4 teaspoon crushed red pepper, and cook for 4 to 6 minutes, or until the vegetables are lightly caramelized and very soft. Add 1 tablespoon garlic and cook for 1 minute. Remove from the heat and transfer to a large bowl to cool.
When the mixture has cooled to room temperature, stir in the ricotta or mascarpone cheese, spinach, 1/2 cup Parmesan cheese, and sugar. Stir to combine well.
Lightly grease a deep 9 by 13-inch casserole or lasagna pan and set aside.
Bring a large pot of salted water to a boil and cook the pasta shells until just al dente, 10 to 12 minutes. Drain and rinse under cold running water. Pat shells dry. Stuff the pasta shells with the sausage-eggplant mixture and place in the prepared casserole dish.
In a large saucepan, heat the remaining tablespoon of olive oil over medium high heat and saute the remaining chopped onions until translucent, about 4 minutes. Add the remaining tablespoon of garlic and cook until fragrant, 1 to 2 minutes. Add the crushed tomatoes, remaining 3/4 teaspoon salt, and remaining 1/2 teaspoon crushed red pepper and cook for 5 minutes. Add the heavy cream and cook until the sauce is reduced in volume by about 1/3, about 20 minutes.
Preheat the oven to 350 degrees F.
Add the basil to the sauce and pour the sauce over the shells in the casserole. Sprinkle with the fontina cheese and the remaining Parmesan. Cover the casserole tightly with aluminum foil and bake for 45 minutes. Remove the foil and continue baking until the sauce is lightly browned in spots and bubbly around the edges, about 15 minutes longer. Let stand for 10 minutes before serving.