Cut the ciabatta slice into small cubes, place in a bowl, cover with milk and let soak until softened, about 5 minutes.
In a large bowl combine the ground beef, grated Parmesan, minced onion, thyme leaves, egg, chopped basil, lemon zest, salt and black pepper.
Squeeze the soaked bread to remove most of the milk, add the bread to the meat mixture, and mix until just combined.
Portion the mixture into meatballs of about 2 oz each (use your palm to shape them round and gently flatten slightly).
Heat 2 tbsp extra-virgin olive oil in a very large frying pan over high heat until hot, then add meatballs without crowding; do not move them for about 3 minutes to form a crust.
Turn the meatballs and cook the other side for about 3 minutes, using pan juices to baste; once both sides are seared, remove from heat and set aside (they will finish cooking in the sauce).
To make the sauce, heat 2 tbsp extra-virgin olive oil in a saucepan over medium heat with the crushed garlic; gently cook until golden then discard the garlic.
Add the chopped peeled tomatoes, a couple of basil leaves, the bay leaf, salt, pepper and a pinch of sugar; reduce heat and simmer for 10–15 minutes.
About halfway through the sauce cooking time, add the seared meatballs to the sauce and continue simmering until meatballs are cooked through and sauce has thickened, about 8 minutes more.
Meanwhile, cook the spaghetti in a pot of lightly salted boiling water until about 8 minutes or al dente according to the pasta instructions; drain.
Toss the drained spaghetti into the pan with the meatball sauce, combine well, grate fresh Parmesan on top, and serve immediately.