Prep the lettuce and toppings: Separate and rinse the lettuce leaves, then pat dry. Chop tomatoes, red onion, cilantro, and avocado.
Set everything aside so assembly is easy.
Sweat the aromatics: Heat a large skillet over medium heat. Add olive oil, then the diced onion. Cook 3–4 minutes until softened.
Stir in garlic and cook 30 seconds until fragrant.
Brown the beef: Add ground beef to the skillet. Cook, breaking it up with a spatula, until no longer pink, about 5–7 minutes. If there’s excess fat, drain it.
Season deeply: Stir in chili powder, cumin, smoked paprika, oregano, salt, pepper, and red pepper flakes.
Toast the spices with the beef for 30–60 seconds to bloom the flavors.
Build the sauce: Add tomato paste and stir to coat the meat. Pour in the beef broth and simmer 2–3 minutes until the mixture is glossy and slightly thickened. Taste and adjust salt.
Assemble the wraps: Place a spoonful of seasoned beef in each lettuce leaf.
Top with tomatoes, cheese, avocado, red onion, and cilantro. Add a dollop of Greek yogurt or sour cream.
Finish with acid: Squeeze fresh lime over the top. The citrus brightens everything and balances the richness of the beef.
Serve immediately: Lettuce is crispest right away.
Put extra toppings on the table so everyone can build their own.