Start by making the sugo. Place all ingredients in a large, heavy bottomed pot. Using an empty can from the diced tomatoes, add two cans of water to the pot. Bring to a boil and simmer, lid ajar, for one hour. Remove from the heat and allow to cool. Remove and discard the garlic cloves and basil leaves.
For the meatballs, start by soaking the breadcrumbs in the milk. Start with 1/4 cup milk. Add more if needed to make the breadcrumbs soft. Combine the wet breadcrumbs with all the other ingredients (except the vegetable oil) in a large bowl and mix together. I find using my hands works best. Shape the meatballs into small 1/2-inch diameter balls. Set aside. Fill a large, wide skillet about 1/2-inch deep with vegetable oil and place over medium-high heat. Once hot, batch fry the meatballs in the oil until they are all cooked. Transfer to a paper-towel lined plate and leave to cool.
Assemble the lasagna. Mix the ricotta with 3/4 cup sugo in order to loosen the cheese up. Spread some sugo all over the bottom of a 9×13 inch baking dish. Start with a layer of cooked lasagna sheets arranging the layers so the sheets hang over the sides of the baking dish. Spread 1/3 of the ricotta over top, followed by a layer of the meatballs. Layer 1/3 of the egg slices followed by a sprinkling of mozzarella, generous spoonfuls of sugo and finally a sprinkling of parmesan. Repeat for two more layers. Top with lasagna sheets, sugo and a generous amount of grated parmesan.
Bake in a 350˚F oven for 45 minutes to 1 hour. If you find the top of the lasagna is coloring too much, cover it with foil. Once out of the oven, cover with foil and leave to cool slightly so the lasagna sets before you cut into it (otherwise you end up with a sloppy mess of cheese, pasta and sauce that won’t hold its shape). Enjoy!
If you cannot find passata (uncooked, passed and strained tomatoes) you can substitute it with another two cans of diced tomatoes.