For the meatballs: In a large bowl, using your hands mix together the beef, pork, Parmesan, parsley, breadcrumbs, stock, salt, cayenne, eggs, garlic and onions until evenly combined. Be careful not to overwork the mixture; you don't want to compact the meat too much or the meatballs will be tough. Put a little oil on your hands and form loosely into golf ball size meatballs. You should have about 25.
Heat the olive oil in a large Dutch oven over medium heat. Gently add the meatballs and brown thoroughly on all sides; this will take about 15 minutes. Transfer the meatballs to a plate, and refrigerate until you are ready to cook them in the sugo.
For the gravy: In the same pan you used to cook the meatballs, heat the olive oil over medium heat and add the celery, onions and carrots. Cook, stirring occasionally, until soft, about 8 minutes. Add the garlic and bay leaves and cook until fragrant, 1 minute. Push the veggies to one side and add the tomato paste, toasting it on the bottom of the pan for 1 minute. Stir into the vegetables.
Add the tomatoes, chicken stock and thyme, and bring to a boil. Reduce the heat and simmer very gently, partially covered, until thick and significantly reduced, about an hour.
Carefully add the meatballs, a few at a time, and simmer, stirring very gently now and then - don't break-a-ya bawls! - until cooked through, 40 minutes. Discard the bay leaves and thyme sprigs. Add most of the basil and stir, reserving a little to sprinkle over the top for serving.
Meanwhile, cook the spaghetti in a pot of salted boiling water until al dente, about 8 minutes.
To serve, put the pasta into a large serving bowl. Immediately ladle sauce on top and then the meatballs. Garnish with chopped fresh basil and freshly grated Parmesan. Plate the remaining sauce and meatballs in a separate bowl.