There is no guarantee to win even though you have the best players. Many factors impact the match engine. Of course skills matter most. Home advantage also matters. Higher routine than your opponent can also be a decider. And then of course how you set your tactics. Are you playing fast and technical offensive players when playing a direct attacking style or powerful attackers when playing long balls? You can read much more on tactics in the help center.
But then again having set all correct still does not guarantee a win. All teams can have off days. That is how the match engine is build, HOWEVER the best teams will win the most time always if the match was played many time. Your job is to impact all the things that influence how matches go to OPTIMIZE your chance to win a match. The better you are the less chance there is an upset will happen.
So to sum up: The best teams win in the long run, but on match day anything can happen! Just like in real life. Remember, the match engine gives back what it takes as well.