Prep the tzatziki: Grate the cucumber, then squeeze it dry in a clean kitchen towel to remove excess water.
In a bowl, combine yogurt, cucumber, garlic, lemon juice, olive oil, dill, salt, and pepper. Mix, taste, and adjust salt or lemon. Chill while you cook the beef.
Marinate the beef: Whisk olive oil, garlic, oregano, cumin, coriander, smoked paprika, cinnamon, salt, pepper, lemon juice, and red wine vinegar.
Slice the beef against the grain into thin strips. Toss with the marinade and let sit for 20–45 minutes at room temperature or up to 4 hours in the fridge.
Heat the skillet: Use a large cast-iron or stainless pan over medium-high heat. Get it hot so the beef sears well.
Cook the beef in batches: Add a thin film of oil if needed.
Spread beef in a single layer and sear 1–2 minutes per side until browned and just cooked through. Do not overcrowd the pan. Transfer to a plate and keep warm.
Repeat with remaining beef.
Warm the pita: Brush pitas lightly with olive oil and warm in a dry pan or low oven until soft and pliable.
Assemble gyros: Spread tzatziki on warm pita. Add beef, red onion, tomato, and lettuce. Finish with a squeeze of lemon and optional feta or olives.
Serve immediately: Gyros are best hot and freshly assembled, with extra tzatziki on the side.