To make marinade, saute onion in a medium saucepan until soft but not brown. Add remaining ingredients (except roast) and bring to a boil. Remove from heat and cool.
Place roast in deep glass or plastic container. (Do not marinate in aluminum.) Pour cooled marinade over roast and refrigerate covered; turn the roast in the marinade several times. Marinate for at least 5 hours, or preferably overnight.
Remove roast from marinade and bring to room temperature. Barbecue or broil at high heat for 8 to 10 minutes per side, turning once. Use an instant thermometer , it should register 120 degrees for rare, 135 degrees for medium, and 150 for well done. Slice roast at an angle into 1/4 inch slices.