give someone/something a run for their money
US /ɡɪv ˈsʌm.wʌn ˈsʌm.θɪŋ ə rʌn fɔr ðɛr ˈmʌn.i/
UK /ɡɪv ˈsʌm.wʌn ˈsʌm.θɪŋ ə rʌn fɔr ðɛr ˈmʌn.i/

1.
to compete very well against someone or something, making them work hard to win
:
•
The underdog team really gave the champions a run for their money in the final match.
•
Our new product is designed to give the market leader a run for their money.