AC Milan leads the all-time head-to-head record with 51 wins, 13 draws, and 13 Bari victories across 77 competitive matches. Their most recent meeting was a 2-0 Milan win in the 2025/26 Coppa Italia on August 17, 2025. Bari’s last win over Milan was a 1-0 Serie A result in April 1998.
The last time Bari beat AC Milan in a competitive match was April 1998 — and they have not come close since. In 27 years across cup rounds and league seasons, Milan has not surrendered a single official loss to the Apulian club. That is the weight Bari carried into San Siro on the opening night of the 2025/26 season.
This complete AC Milan vs SSC Bari timeline covers everything from their first recorded meeting in 1928 to the 2-0 Coppa Italia result on August 17, 2025. Confirmed scores, lineup details, key moments, and all-time head-to-head stats are all here.
All-Time Head-to-Head Record
| Stat | Record |
|---|---|
| Total Matches | 77 |
| AC Milan Wins | 51 |
| Draws | 13 |
| SSC Bari Wins | 13 |
| Milan Goals Scored | 182 |
| Bari Goals Scored | 64 |
(Source: Transfermarkt club-vs-club historical records)
Milan’s dominance across 77 matches is clear. But those 13 Bari victories carry real weight — each one marks a day when the south disrupted the north, and squad budgets didn’t decide the result.
How It All Began: 1928–1960s
The AC Milan vs SSC Bari timeline officially opens on November 1, 1928, in the Divisione Nazionale — Italy’s top-flight competition before Serie A took its modern form. The Divisione Nazionale was the forerunner to what we now know as Serie A, and football in that era was physical, low-scoring, and tactically far simpler than today’s game.
Milan was already building toward northern dominance with stronger financial backing. Bari, founded in 1908 and representing the Apulia region in Italy’s south, was fighting hard just to hold top-flight status year to year.
Historical records compiled by RSSSF (Rec.Sport.Soccer Statistics Foundation) document several results from this stretch. In the 1946/47 season, Milan won 3-0. The following year produced a heavier defeat — an 8-1 Milan win in 1947/48. But the early chapters had already shown that Bari were capable of shocking the northern club: in 1931/32, they won 5-2, proof that upsets were possible even in this fixture’s earliest years.
The single largest result in the entire timeline came on December 18, 1949, when Milan beat Bari 9-1 — still the biggest winning margin ever recorded between these two clubs.
1980s–1990s: The Sacchi Era and a Famous Bari Night
By the 1980s, AC Milan had assembled one of football’s most complete squads. Under Arrigo Sacchi, they pressed high, defended as a unit, and unleashed Marco van Basten, Ruud Gullit, and Frank Rijkaard in attack and midfield. The defensive shape — anchored by Franco Baresi and Paolo Maldini — gave very little away. When they met Bari in this period, the results were predictably one-sided.
The 1990s added real texture. A teenage Antonio Cassano — who would later be part of Milan’s 2010/11 Scudetto-winning squad — was cutting through Italian football at Bari and reportedly caught the eye with an impressive finish against the Rossoneri. The young forward from Bari went on to become one of Italian football’s most gifted and unpredictable players.
More significantly, May 28, 1995, brought one of Bari’s most celebrated moments in this fixture: a 1-0 victory at San Siro. Winning at the home of Italian football’s most decorated clubs was a statement few southern clubs could make. Bari fans still reference it.
The last competitive win for Bari over Milan came in April 1998 — a 1-0 Serie A result. No official win since.
2000s–2011: A Red Card Moment and a Cup Exit
The early 2000s kept Milan at the top of European football, with Andriy Shevchenko and Filippo Inzaghi driving the attack. Bari’s finances kept them cycling between divisions, making Serie A meetings with Milan infrequent.
One of the most-discussed moments of the modern era came in March 2011, during a 1-1 Serie A draw, when Zlatan Ibrahimović was shown a red card following a disciplinary incident in the second half. It was the kind of flashpoint that reminded neutral fans why watching Bari against the big clubs always had an edge — they rarely made things comfortable.
Later that same season, the 2010/11 Coppa Italia Round of 16 ended with Milan advancing via a controlled 3-0 win, ending Bari’s cup run cleanly.
2023 Coppa Italia: The First Meeting in 12 Years
With Bari spending most of the 2010s outside Serie A — dropping as far as Serie D before working their way back up — competitive meetings between these clubs almost disappeared entirely. The 2022/23 Coppa Italia brought them together again for the first time since 2011.
The match took place on January 13, 2023, at Stadio Giuseppe Meazza (San Siro), before a crowd of just over 50,000. Bari, then competing in Serie B under Michele Mignani, scored first — a moment that briefly made the occasion feel like something more than a foregone conclusion.
Milan responded and eventually ran out 4-1 winners, with goals from Divock Origi (×2), Junior Messias, and Rade Krunić. That Bari opener, though, mattered. It was their first goal at San Siro in over two decades and a reminder that this club, despite the division gap, still had something to say in this fixture.
Latest Match: AC Milan 2-0 SSC Bari | Coppa Italia, August 17, 2025
The most recent confirmed entry in this timeline took place on Sunday, August 17, 2025, at Stadio Giuseppe Meazza (San Siro). The occasion was the 2025/26 Coppa Italia Frecciarossa First Round, attended by 71,061 fans — an extraordinary crowd for a first-round cup match, reflecting the appetite for Milan’s first competitive fixture of the new season.
Milan was managed by Massimiliano Allegri, in the second period of his time at the club, though he watched from the stands under a touchline ban. Assistant Landucci managed from the sideline. Bari were managed by Fabio Caserta, who had taken charge in June 2025, with the club competing in Serie B.
Starting Lineups
- AC Milan (3-5-2): Maignan; Tomori, Gabbia, Pavlović; Saelemaekers, Fofana, Ricci, Loftus-Cheek, Estupiñán; Pulisic, Leão.
- SSC Bari (4-3-3): Cerofolini; Dickmann, Vicari, Nikolaou, Dorval; Bellomo, Braunöder, Pagano; Pereiro, Moncini, Sibilli.
Step-by-Step Match Timeline
- Early minutes — Bari’s warning sign. Bari striker Gabriele Moncini had the match’s first real opportunity. His long-range effort stretched Maignan’s positioning and sailed wide of the far post — a signal that Milan’s new defensive shape was still finding its rhythm.
- 6′ — Fofana tests Cerofolini Midfielder Youssouf Fofana drove a right-footed shot from outside the box. Michele Cerofolini pushed it away comfortably, but the Bari goalkeeper was already in the match.
- 14′ — GOAL: Rafael Leão 1-0 Milan took the lead. A precise cross from centre-back Fikayo Tomori reached the penalty area, and Rafael Leão rose above his marker to head the ball into the bottom right corner. It was Leão’s first goal of the 2025/26 season — and, according to AC Milan’s official stats, only his fourth ever headed goal for the club across all competitions.
- 18′ — Leão off, Giménez on. Four minutes after scoring, Leão felt calf discomfort and left the pitch. Santiago Giménez made his competitive debut for Milan — an early test of depth under the new setup.
- 25′ — Pulisic hits the bar. Christian Pulisic connected from the left side of the box with a left-footed effort that crashed against the crossbar. The American would not be kept out for the full 90.
- 30′ — Cerofolini saves again. A second excellent stop from the Bari keeper denied Fofana once more as Milan pressed hard for the second goal. Cerofolini was the reason this remained 1-0 at the interval.
Half-time: AC Milan 1-0 SSC Bari
- 48′ — GOAL: Christian Pulisic 2-0 Three minutes into the second half, the match was settled. A neat one-two with Giménez created the space, and Pulisic finished with a right-footed shot into the centre of the goal. His first competitive strike of the new season, and effectively the end of Bari’s night.
- 66′ — Modrić and Jashari debut. A triple substitution at the 66th minute: Luka Modrić replaced Ricci, Ardon Jashari came on for Loftus-Cheek, and Yunus Musah entered for Pulisic. Modrić’s arrival received a loud ovation from 71,000 fans.
- 70′ — Modrić: class at 40 In his first minutes of competitive football for Milan, Modrić produced a double feint inside Bari’s box before seeing his right-footed effort saved by Cerofolini. The Croatian, 40 years old, looked entirely at ease at this level.
- 81′ — Late changes: Noah Okafor replaced Saelemaekers. The score remained unchanged through to the final whistle.
Full-time: AC Milan 2-0 SSC Bari
Final Match Stats
(Source: ESPN / AC Milan Official)
| Stat | AC Milan | SSC Bari |
|---|---|---|
| Possession | 64.9% | 35.1% |
| Total Shots | 24 | 6 |
| Shots on Target | 5 | 1 |
| Saves | 1 | 3 |
| Corner Kicks | 12 | 1 |
| Yellow Cards | 1 (Estupiñán, 21′) | 0 |
| xG | 1.93 | 0.21 |
Milan’s xG of 1.93 from 24 shots confirms a deserved win — and a scoreline that could easily have been heavier. Bari’s xG of just 0.21 from six attempts reflects a team that defended as well as the gap between the divisions allowed, before running out of energy after the hour mark.
What Comes Next?
The AC Milan vs SSC Bari fixture isn’t a rivalry built on geography or derby hatred. It is a structural test — a club from Italy’s financial and footballing centre against one fighting its way back from decades in the lower divisions.
Bari are owned by Luigi De Laurentiis, son of Napoli president Aurelio De Laurentiis, and have been building steadily through the Italian pyramid since their Serie D nadir in 2018. As of the 2025/26 season, they remain in Serie B, chasing the Serie A return that would make this fixture a regular league fixture again.
When that happens — possibly soon — the question this entire timeline points toward is whether Bari can produce their first competitive win over Milan since April 1998. That is nearly three decades without a win against one opponent. It is the open thread running through every result in this article.
FAQs
What was the result of the last AC Milan vs SSC Bari match?
AC Milan won 2-0 on August 17, 2025, in the 2025/26 Coppa Italia Frecciarossa First Round at San Siro. Goals from Rafael Leão (14′) and Christian Pulisic (48′).
When was the last time Bari beat AC Milan?
April 1998, a 1-0 Serie A win. It remains Bari’s last competitive victory over the Rossoneri.
What is Milan’s record against Bari?
51 wins, 13 draws, 13 losses across 77 total competitive matches — 182 goals scored, 64 conceded.
Who scored for Milan in the 2025 Coppa Italia match?
Rafael Leão (header, 14′, assisted by Fikayo Tomori) and Christian Pulisic (right-footed finish, 48′, assisted by Santiago Giménez).
What formation did Milan use in August 2025?
Allegri set up a 3-5-2, with Saelemaekers and Estupiñán as wingbacks and a Pulisic-Leão front two.
Found a result we missed? Leave it in the comments — this timeline will be updated after every competitive meeting. For more Italian football history and match breakdowns, visit whatisinsights.
