Goal Contribution Performance – Top 5 Leagues

Article by Ben Griffis

This article is an expansion of the Ligue 1 Contribution Performance article. It analyzes goal and assist performance, compared to expected goals and assists, of the “Top 5” European leagues: England’s Premier League; Spain’s La Liga; Germany’s Bundesliga; Italy’s Serie A; and France’s Ligue 1, albeit shorter since I’ve already looked into Ligue 1.

To avoid clogging this article up, please see the Ligue 1 article linked above for more detailed variable definitions and methodology. In short, I downloaded the data from understat.com using Python code. I then calculated Goal Performance as (goals – xG) and Assist Performance as (assists – xA). A positive performance number indicates outperforming statistical expectations, and a negative number indicates underperformance. xG Buildup, the size of each data point, shows how often and the quality of a player’s involvement in their team’s buildup play—all passes in a period of possession before a final pass or shot (thus, it excludes xG and xA).

An interesting component to Goal Performance is that anything can happen over the course of a game or two—such as lucky bounces, goalkeeper mistakes—but over the course of a season a player who outperforms xG can be called a quality finisher.

Assist Performance is somewhat out of the player’s control. Since it depends on the teammate receiving the ball both to take a shot and to score, a player who gives chances to teammates can underperform assists through no fault of their own. Assist Performance is a bit more difficult to interpret, but positive numbers mean that either a player is delivering very good passes from areas most others can’t, or their teammates are missing opportunities—or a combination of both, of course.

For these reasons, looking at both metrics at once allows us to see how expected or unexpected a player’s goal contribution is over the season. I collected the past 5 full seasons of data from the Top 5 leagues and added the data from the current 2020/21 season. At the time of download, all French teams had played 33 games, English teams were between 30-32 games, German teams between 28-29, Spanish teams between 30-31, and Italian teams between 30-31 as well. The seasons are in progress, but have enough data to look at. Direct comparisons to completed seasons can be made, but keep caution because anything can happen over a few games with xA and xG. But for this article, I am not making a comparison as only one plot shows all 6 seasons’ data at once. I filtered players who played less than 500 minutes out.

A final note before looking into the graphs: each quadrant of the graph refers to a specific player description, especially the most extreme players in each quadrant. The table below shows these descriptions so I do not have to clutter graphs with more text. Read the table as you would a graph, with the top right cell in the table acting as the top right quadrant (quadrant I) and so on.

Q II: Poor finisher whose teammates score their chances at a higher than expected rateQ I: Great finisher whose teammates score their chances at a higher than expected rate
Q III: Poor finisher whose teammates score their chances at a lower than expected rateQ IV: Great finisher whose teammates score their chances at a lower than expected rate


A few things pop out immediately when looking at the Premier League’s data so far. First, and this will hold throughout every league, is that there’s a relatively large group of players clumped together in a square formed from (-1, -1) to (0,0). This makes sense, since many players don’t take a lot of shots and many players don’t make assists or final passes (keepers, defenders, central midfielders sometimes). Because plenty of players have relatively few chances for shots or final passes to begin with, there is little opportunity for them to record high absolute values, such as 3 or -3 on either metric.

With that said, however, positions do not dictate where a player will be or how extreme their performance numbers are. Many attackers are outliers here, but there are also plenty who are not. İlkay Gündoğan stands out as a midfielder around strikers in quadrant IV, for example. Kevin De Bruyne is in a similar situation in Quadrant II. An attacking midfielder holds the top goal performance number, not a forward—James Maddison.

Next, a few players are performing exceptionally well this season. Tottenham’s Harry Kane stands out as the player who is best outperforming assist expectations. Kane is currently leading the league in assists as a striker, so that is easy to explain. Another Spurs player, Son Heung-min, has scored almost 5 more goals this season than xG says he should have. In the beginning of the season, Harry Kane assisted Son 8 times. It is possible Son finished these chances very well, bringing up both his goal performance and Kane’s assist performance numbers.

Leicester’s James Maddison currently leads the league in goal performance, having scored 4.92 more goals than expected. As an attacking midfielder, he doesn’t have the opportunity for as many goals as a striker, so he is certainly one of the key players in Leicester’s bid for a Champion’s League spot for next season.

Maddison’s assist performance isn’t that noteworthy, though, which brings me to another interesting bit about the data. There are relatively few players who record absolute value extremes in both goal and assist performance. Players with large magnitude numbers tend to have one of their metrics be closer to 0. Son, Maddison, and Kane are examples of this. Brighton’s Neal Maupay, Manchester City’s İlkay Gündoğan, and Leicester’s Jamie Vardy are notable exceptions.

Chelsea’s Timo Werner is having a season to forget in front of the goal, having scored 6.16 fewer goals than expected—not a great number when he has scored just 5. Liverpool’s Roberto Firmino and City’s Kevin De Bruyne are performing similarly, despite being very different players. Even their xG Buildup numbers are within 1.5 of each other. However, while both are assisting their teammates at a decent return, their finishing could improve.

Leeds’s Patrick Bamford, despite having a great season with Leeds and scoring 14 goals so far, could still improve on his finishing. However, much like Harry Kane, Bamford has been stellar at providing his teammates with opportunities. His 7 assists—3.55 more than expected—have undoubtedly helped Leeds soar to mid-table this season after being promoted from the Championship last season.

Now let’s move on to players who have finished well but recorded fewer assists than expected. İlkay Gündoğan has already been discussed, and similar players this season include another Manchester City player—Riyad Mahrez—and Liverpool’s Diogo Jota. Jota has 0 assist and Gündoğan has 1, so their contribution has been missed in this regard. However, these players are exceeding expectations for goals. So, while they aren’t assisting their teammates as often as expected, they are making up for it by finishing difficult chances.

Players who have been wasteful this season include Liverpool’s Sadio Mané and Brighton’s Neal Maupay. Both should have scored about 3 or 4 more goals this season (each have scored 8), and they are both underperforming in assists as well. Liverpool have, as a team, not lived up to expectations this season. Of course, that is in part because of the countless injury problems, but two of their front 3 (Firmino and Mané) have squandered many goal-scoring opportunities. They should probably be a few places higher on the table than the 6th/7th they’ve been in. They are 3 points away from Leicester in 3rd.


La Liga’s data looks different from the Premier League’s. There are many outliers almost forming a circle around the large group of regular performers. We still see a large group of players in the (-1, -1) to (0, 0) area like we saw in England (again, this holds true for all leagues).

The major player that stands out here is Atlético Madrid’s Marcos Llorente. Llorente has scored 11 goals and recorded 8 assists, a much better record than his 3.98 xG and 4.24 xA. This is probably one factor contributing to Atlético’s success this season. They currently sit level on points with leaders Real Madrid but have a game in hand.

Since there are so many players in all quadrants of La Liga’s data, I will save space by not discussing each one. However, I would like to call out a few players. The first discussion, however, is about the absence of statistical outliers for Cádiz, who have been the surprise of this season. After being promoted ahead of this season, people tipped them to go down or fight against relegation, but currently sit 13th, 9 points ahead of 18th & 19th-placed Huesca and Elche. Their performance is not due to a few players exceeding expectations. That is a testament to Cádiz’s play and tactics this season.

A lot of quality strikers and wingers stand out by exceeding goal and assist expectations. Karim Benzema (Real), Iago Aspas (Celta’s talisman), Betis’ Tello and Joaquín all stand out as exceptional finishers who have also assisted more times this season than expected. Aspas is an interesting player, because he’s had a great season as a striker, but is also heavily involved in his club’s buildup play compared to others with similar performances. Aspas has been key to Celta Vigo for years now, and this season’s data certainly illustrates that.

Moving on, Atlético’s Luis Suárez is performing very well in front of goal this season. Not bad for someone who Barcelona threw out at the end of last season. In this quadrant is Barcelona’s Lionel Messi, who wouldn’t be highlighted at all if he wasn’t Lionel Messi. I had to search for him, which is a testament both to how great he is at finishing the chances he’s expected to, but also that he isn’t having one of his best-ever seasons like we have been accustomed to. That said, he’s still scored a remarkable 23 goals. From a performance side, that’s more than passable. He’s just consistently finishing the crazy number of chances he’s had. Him not standing out on this graph and has 23 goals says a lot about him as a player.

Moving clockwise, we see Celta’s Brais Méndez. Méndez has a Goal Performance number of exactly 0, which is odd considering he has scored 6 goals. It’s an oddity of statistics that his xG has added up to exactly 6 instead of 6.03 or 5.92. However, he is a close second at having the worst assist performance number, only behind Villarreal’s Moi Gómez.

Three players are having seasons to forget from an individual performance standpoint: Getafe’s Mathías Olivera, Real’s Vinícius, and Sevilla’s Lucas Ocampos. Martin Braithwaite, the famed Barcelona purchase from Leganés after the winter 2020 transfer window, hasn’t performed very well in front of the goal. Barcelona did not buy him to be a starter for very long, but this season he is falling below expectations.

Finally, there are a healthy number of players who have exceeded their assist expectations. Chief among them is Atletico’s Ángel Correa, followed closely behind by his teammate Kieran Trippier and Levante’s Jorge de Frutos—or as I will now call him, George of the Fruit.

La Liga’s data is almost more interesting than the Premier League’s because of the wide array of goal and assist performance numbers. Aesthetically, the outlier circle around the group of average players is pleasing to look at. Lastly, Marcos Llorente’s numbers are off the charts, a testament to his play this season for Atlético.


The Bundesliga this season has several players with high goal performance numbers. Foremost is Bayern’s Robert Lewandowski, who is having arguably the best season of his career this year. 35 goals from 28 games are remarkable, and 8.73 goals more than expected. He picked up right where he left off last season. His 6 assists are also 2.31 more than expected.

Lewandowski’s teammate, Thomas Müller, has the largest assist performance number, with 17 assists and almost 7 more than expected. Müller has been one of Europe’s finest playmakers and goal contributors for years now, and this season is no different. It certainly helps to have a teammate like Lewandowski to bring your assist tally up. Other players in this quadrant having very impressive seasons include Dortmund’s Erling Haaland—one of the most sought-after players in the world—Stuttgart’s Saša Kalajdžić, and Borussia Mönchengladbach’s Lars Stindl and Florian Neuhaus.

Compared to the Premier league and La Liga, relatively few Bundesliga players record outstanding goal contribution numbers while underperforming assists. Bayern’s Serge Gnabry is the main player who finishes well but whose teammates don’t finish his passes, as is Silas Wamangituka of Stuttgart.

Few players are performing much poorly than others on both goal performance and assist performance in the Bundesliga this season. Dortmund’s Marco Reus and Mönchengladbach’s Breel Embolo have poor finishing numbers, while Jean-Paul Boëtius of Mainz has low assist performance. Like we’ve seen in the Premier league and La Liga, it’s always interesting to see players from the same team having totally different performance numbers. Soccer is truly a team game, and while an over performing individual is great to have in the squad, they alone won’t determine a club’s final position. Neither will an underperforming player.

Freiburg’s Lucas Höler has scored about half as many goals as he should have so far this season, netting 4 on an xG of 7.82. This has not stopped Freiburg from, once again, exceeding their pre-season expectations. Hertha Berlin’s Dodi Lukebakio and RB Leipzig’s Dani Olmo are other players in this quadrant who have missed their own chances but are still on the scoresheet because of their teammates’ finishing.

Finally, rounding out the outliers, are Bayern’s Joshua Kimmich and Mönchengladbach’s Jonas Hofmann with very high assist performance numbers and decent finishing numbers. Both Bayern and Borussia Mönchengladbach have players whose performances are outliers all across the spectrum. It is interesting to see—not just in one team, but in two—such an array of player performances.


This season’s Serie A has some interesting player performance numbers as well. Rodrigo De Paul of Udinese probably stands out the most, with a good goal performance number but very low assist performance number. Even though he has recorded 5 assists, he is still 5.79 below his expected assists. This means his teammates need to either start taking more shots from his passes or need to finish their chances. Udinese are currently 12th but only 2 points away from 11th place Bologna.

Juventus’s Cristiano Ronaldo wouldn’t normally be called out on the graph, but—like Messi—I had to search for him. He and Messi are two of the greatest ever players to play the game, but at least this season, neither are outliers in their season’s goal or assist performances. Ronaldo, even with 25 goals, simply finishes every chance he gets much like Messi. Further, Ronaldo’s 3 assists are in line with his 3.49 expected assists. A showing of his style of play—especially in recent years as more of a striker than winger—which does not include delivering many assists to teammates.

Serie A has a surprising number of players exceeding their goal expectations. Luis Muriel of Atalanta has netted 6.1 more goals than expected, a bonus on top of Atalanta’s development into Champion’s League regulars recently. Unlike the other Top European leagues, Serie A has several top goal performances coming from teams not traditionally regarded as the top teams. Genoa’s Mattia Destro, Sassuolo’s long-serving Domenico Berardi, Crotone’s Simy, and Parma’s Hernani all record some of the best goal performance numbers. These players are not recording significant assist performance numbers at the same time.

Most Serie A outliers this season have strong goal performance numbers, but a few outliers have underperformed their xG. Verona’s Kevin Lasagna (loaned from Udinese in January) has performed the worst in front of the goal, with 6.96 fewer goals than expected. Bologna’s Rodrigo Palacio, Roma’s striker Edin Džeko, and Benevento’s Gianluca Lapadula have also underperformed in front of goal but have performed on par with their expected assists.

Only 3 Serie A players this season stand out for underperforming their goal expectations but outperform their assists. Those players are Cagliari’s Leonardo Pavoletti, Atalanta’s Duván Zapata, and Juventus’s Álvaro Morata. Finally, Lazio’s world-class midfielder Sergej Milinković-Savić has the highest assist performance number. His 10 assists are 4.6 more than expected this season.


As I mentioned at the start, I won’t discuss Ligue 1 much in this article. Please read my previous post on Ligue 1 for more detail. One thing I like about Ligue 1’s data is how similar it looks to La Liga. There’s a large group of players in the middle performing to expectations, but a large circle of outliers spread out around the group of players.


Here we can see all of this season’s data on one graph. The players are color-coded by league and I tried to use a color-blind scale, so I hope it works out. Since I have already discussed each league individually, I won’t do much analysis here. I don’t think there’s much more to be said across the different leagues.

Robert Lewandowski has exceeded goal expectations the most this season across the 5 leagues. Marcos Llorente, Spain’s most extreme outlier, is second. Kevin Lasagna takes the unfortunate honor of squandering the most opportunities. Timo Werner is second to Lasagna.

Thomas Müller records the largest assist performance number with Harry Kane coming in second. Rodrigo De Paul and Luis Alberto are the bottom two for assist performance. Interestingly, the Bundesliga take the crown for most exceptional goal scoring and assisting, while Serie A players record the worst numbers for goal and assist performance.


Here is the combined graph of all leagues from 2015/16 through this season’s matches. There are 15,874 total data points in the sample, but some will be excluded by filtering out players playing fewer than 500 minutes in a season.

Lionel Messi, while not being an outlier in 2020/21, holds the two best goal performance numbers over the last 6 years. In 2016/17 he scored 37 goals, 10.11 more than expected. In 2018/19 he scored 36 goals, 10.0 more than expected. Messi is really one of a kind. However, Robert Lewandowski has potentially 5 more games to surpass that this season. He currently sits in place 6, with a goal performance number of 8.73 more than expected. If he can score a few unexpected goals before the end of the season, he should have Messi beat.

Emil Forsberg’s 2016/17 season with RB Leipzig was the largest assist performance number at 6.98, but is followed right behind by Thomas Müller this season at 6.97. I would expect Müller to add at least 0.01 to his assist performance by the end of the season.

Interestingly, Robert Lewandowski holds the lowest goal performance number. In 2018/19, he “only” scored 22 goals, 11.14 fewer than expected. By the end of this season, he may hold the best and worst goal performance figures. Manchester City’s Raheem Sterling holds the lowest assist performance number of this time span, assisting 1 player in 2019/20, 6.21 fewer than expected. 2015/16 Neymar when he was at Barcelona come in second, 6.07 assists fewer than expected, even though he assisted teammates 12 times that season.

Overall, these graphs are interesting to look at. These two metrics alone cannot tell who are the best or worst performers in a league, but they give an indication of if players can be expected to hold similar performance levels over time. Most players will revert to around expectations over a long period, but as we can see here, sometimes they stay at very high or very low levels. Lewandowski is rare in that he has recorded the worst goal performance statistic and looks like he may well record the best by the end of the season. Messi is rare in that two of his seasons are the top 2 goal performance metrics. Watching him play, it’s easy to see that many of his goals come from nowhere. Compare Messi’s finishing with Ronaldo, who isn’t an outlier in finishing but is one of the greatest goal scorers of all time. Ronaldo is a master at finishing every chance he’s expected to finish, and that propels his teams to soaring heights.

Thank you for reading such a long article. I hope you find these visualizations as fascinating as I do. Stay tuned for more analysis in the upcoming weeks and months as more content is added to this website. And if you like my work, please feel free to Buy Me a Coffee by clicking the picture below. Anything is greatly appreciated. Again, thank you for reading and please leave any comments below, I would love to hear additional insight and thoughts.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s