Heat 1 tbsp. olive oil in a 12″ skillet over medium-high heat. Add onions, carrots, and celery and cook, stirring often, until soft, about 10 minutes. Add beef and pork and cook, stirring often, until browned, 10–12 minutes. Stir in tomato sauce and paste, reduce heat to medium-low, and cook, stirring occasionally, until thickened, 45–50 minutes. Transfer meat filling to a bowl and let cool; refrigerate until chilled.
Heat remaining oil in a 2-qt. saucepan over medium-high heat. Add red onion and cook, stirring, until soft, about 10 minutes. Add rice and stir to coat. Stir in saffron and 1 1⁄2 cups water. Bring to a boil, cover, and remove from heat. Let sit for 20 minutes. Remove lid and stir in Parmesan, salt, and pepper. Spread rice out on a plate and let cool. Meanwhile, whisk together flour, eggs, and 1⁄2 cup water in a shallow bowl until smooth; place bread crumbs in another bowl and set both aside.
To assemble, place 1 heaping tablespoon of rice in the palm of your hand; flatten into a disk. Place 1 tsp. chilled meat filling in center of rice disk and form rice around filling to encase it completely; press gently to form a ball. Roll ball in batter and then in bread crumbs until evenly coated. Transfer to a parchment paper—lined baking sheet; repeat with remaining rice, meat mixture, batter, and bread crumbs. Refrigerate for 20 minutes to firm up.
Pour oil into a 6-qt. Dutch oven to a depth of 2″ and heat over medium-high heat until a deep-fry thermometer reads 360°. Working in batches, add rice balls to oil and fry until golden and heated through, about 3 minutes. Using a slotted spoon, transfer rice balls to paper towels; let cool for 5 minutes before serving.