This is how I do it.
Offensive / protective quality
First, let's work out the average strength of the whole team:
Team.Strength = SUM(Players.Strength) / 11
Now we want to split the side in half and develop an average for our defenders and our attacking players.]
Defense.Strength = SUM(Defensive_Players.Strength)/Defensive_Players.Count Offense.Strength = SUM(Offense_Players.Strength)/Offense_Players.Count
Now we have three meanings. The first, average result of the team will be used to calculate our chances of winning. The other two are going to calculate our chances of defense and our chances of winning.
A team with a high level of attack will have a better chance, a team with a high defense will have a better chance of salvation.
Now, if we have teams, let's call them A and B.
Team A has an average of 80 points, an offensive score of 85, and a protective score of 60.
Team B has an average of 70 points, an offensive score of 50 and a protective score of 80.
Now, depending on the average. Team A should be more likely to win. But how much?
Evaluation and Preservation
Let's find out how many times A team scored:
A.Goals = (A.Offensive / B.Defensive) + RAND() = (85/80) + 0.8; = 1.666
I assumed that a random value adds something between -1 and +1, although you can tweak this.
As we can see, the formula indicates that team A should score 1.6 goals. we can either get around this up / down. Or give command A 1 and figure out if another (random chance) is allowed.
Now for team B
B.Goals = (B.Offensive / A.Defensive) + RAND() = (50/60) + 0.2; = 1.03
So, we have a score of 1 and B scoring 1. But remember, we want it to be in favor, because, in general, they are the best team.
So what is the chance to win?
Chance A Will Win = (A.Average / B.Average) = 80 / 70 = 1.14
Thus, we can see that the odds are 14% (0.14) in favor of winning A. We can use this value to see if there are any changes in the final score:
if Rand() <= 0.14 then Final Score = A 2 - 1 B Otherwise A 1 - 1 B
If our random number is 0.8, then the match is a draw.
Rounding and further thoughts
You will definitely want to play around with the values. Remember, game mechanics are very hard to understand. Talk to your players, ask them why they are unhappy. Do teams always lose? Is modeling always stagnating? and etc.
The above diagram deeply reflects randomness of choice. You will want to normalize it, so the chances of a team to score an additional 5 goals are very rare. But a little coincidence is a great way to add some variety to the game.
There are ways to edit this method. For example, instead of the number of goals, you can use the goal figure as the number of chances to win, and then have another function that determines the number of goals based on other factors (i.e., chose a random striker and would use the players individually statistics and goalkeeper to work out if there is a goal)
Hope this helps.