Give someone a run for their money
Give someone a keen, close contest or give someone good value for money, according to the OED it derives from horseracing during the mid-19th century, although some sources suggest foxhunting.