Pulse tomatoes and their juices in a food processor until smooth.
Heat oil in a medium pan over medium heat. Saute onion and garlic until tender, about 7 minutes. Add tomatoes and cook, stirring until slightly thickened, about 20 minutes. Season with salt and pepper. Let cool.
Heat oven to 350 degrees. Pour boiling water over bulgur, cover, and let stand until soft and water is absorbed, 30 minutes.
Cook shells in a large pot of salted boiling water. Drain and let cool.
Steam spinach, covered, over medium heat, stirring occasionally, until tender. Squeeze out excess moisture, coarsely chop, and add to bulgur. Stir in ricotta. Season with salt and pepper. Stir in egg.
Coat bottom of a 9-by-13-inch casserole dish with 1 cup sauce. Spoon filling into shells and arrange in pan. Add remaining sauce, cover with foil, and bake until bubbling, about 40 minutes. Sprinkle with Parmesan before serving.