In a large resealable bag, mix together the lime juice, garlic, hot sauce, canola oil and chili powder. Season with salt and pepper to taste. Remove 1 tablespoon of the marinade and set aside.
Slice the peppers and onions into one-inch square pieces. Place in the bag with the marinade, along with the tomatoes. Slice the meat into thin strips against the grain and put into the bag with the marinade and vegetables and mix well to coat everything with the marinade. Place the bag in a large bowl and refrigerate for one and a half hours.
Mix the reserved marinade with the sour cream and refrigerate.
If using wooden skewers soak in water for 30 minutes before threading on the beef and vegetables.
Remove the meat and vegetables from the refrigerator and let come to room temperature, about 30 minutes. Thread the beef and vegetables onto the skewers. Each skewer should get 4 pieces each of the pepper and onion, 3 tomatoes, and 3 pieces of the beef, alternating as you thread them onto the skewer. Cook the skewers on a grill pan or outdoor grill over medium-high heat until meat is medium rare, about 3 to 4 minutes a side. Garnished with the sour cream and cilantro.