Season all sides of the beef with a fair amount of salt and pepper. In a large Dutch oven, or other heavy pot that has a tight cover, heat 2 tablespoons of olive oil over moderately high heat. Add the garlic and the beef to the pot, browning the meat on all sides, taking the time to get a nice crust on the outside. Add the onion and allow to lightly brown, about 3 to 4 minutes. Add the crushed tomatoes, plus 1 tomato can of water, spices, season with salt and pepper, to taste, and add enough water to cover the meat. Bring to a boil then reduce heat and simmer with a lid for 3 hours until the meat is fork tender. Let meat cool in the liquid. Shred meat and set aside.
Heat a large pot of oil over medium heat. When oil reaches 350 degrees F, fry the corn tortillas 1 at a time. Place the tortilla in the oil and wait about 30 seconds. Then use the handle of a wooden spoon to press down into the center of the tortilla and fold it in the middle. Hold down for a few seconds waiting for the tortilla to form into taco shell and then drain on paper towels. Season with salt.
To make salsa, pulse all the ingredients, except the tomato juice, in a food processor. Add the reserved tomato juice if the salsa is too thick. Drizzle salsa with olive oil, cover with plastic wrap and set aside, allowing the flavors to marry.
To assemble the tacos:
Lay some shredded cabbage as a base. Top with some shredded beef. Serve alongside Guacamole and salsa. Garnish with fresh cilantro leaves.
Halve and pit the avocados. With a tablespoon, scoop out the flesh into a mixing bowl. Mash the avocados using either a fork or potato masher, leaving them still a bit chunky. Add the remaining ingredients, and fold everything together. Drizzle with a little olive oil, adjust seasoning with salt and pepper and give it 1 final mix with a fork.
Lay a piece of plastic wrap tight on the surface of the guacamole so it doesn't brown and refrigerate for at least 1 hour before serving.