The tournament crowned the Netherlands as European champions for the first, and so far only time. Euro 88 was a rare incidence of a major football tournament ending without a single sending-off or goalless draw, nor any knockout matches going to extra time or penalties.

The first group pitted two pre-tournament favourites West Germany and Italy together, along with Spain and Denmark. The Italians had not played in the competition finals since the 1980 edition, which they hosted and West Germany won. Spain and Denmark contested the second semi-final of the 1984 edition. Spain prevailed on penalty-kicks, but lost the final to hosts, France who failed to qualify in 1988.

The Germans and Italians contested the opening game. This game was tightly contested. Roberto Mancini capitalised on a defensive error on the left-hand side of the German goal and the striker squeezed in a shot from a tight angle. Just three minutes later, Walter Zenga stepped out side of his penalty area while holding the ball and delivering a goal kick. Andreas Brehme scored the resulting free-kick which crept under the wall. Both teams settled for a 1–1 draw.

Spain defeated Denmark again, this time 3–2. Míchel opened the scoring after five minutes and Michael Laudrup equalised twenty minutes later. Spain dominated the next hour and Emilio Butragueño and Rafael Gordillo but the Spanish 3–1 to the good. A late surge saw Flemming Povlsen reduce the score line, but was not enough for the Danes, who now needed to win both their remaining games to be certain of a place in the semi-finals.

In the remaining games the West Germans swept aside the Danes and Spanish. Jurgen Klinsmann and Olaf Thon scored to dispatch the former 2–0 while two goals from Rudi Völler was enough to beat Spain 2–0. The second goal was particularly notable. Lothar Matthäus ran forty yards into the Spanish penalty box before back-heeeling the ball for the oncoming Völler, following up his run, to strike the ball with the outside of his foot and into the corner of the goal.

The Italians won a difficult match against the Spanish 1–0, courtesy of a goal from Gianluca Vialli, a low cross-shot to the net on 73 minutes. In the last games, against an already eliminated Denmark, the Italians prevailed by two goals to nil.

The second group witnessed a surprising set of results. In the opening game, one of the pre-tournament favourites England lost 0–1 to Ireland. Ray Houghton scored a looping header after six minutes after the English defense failed to clear a cross. The English applied strong pressure as the game wore on. Gary Lineker was unusually sluggish, missing a series of chances and hitting the cross bar. In the other opening game, the Soviet Union defeated the Netherlands 1–0 through a Vasyl Rats goal, despite the Dutch dominating for long periods.

Results for UEFA Euro 1988 finalists.

England met the Netherlands in Düsseldorf; both needed to win. England started strongly with Lineker hitting a post and Glen Hoddle striking the crossbar with a free-kick. The English defence, weakened by the absence of Terry Butcher, conceded the first of three goals to Marco van Basten on 44 minutes. Van Basten turned Butcher's replacement Tony Adams and beat Peter Shilton – playing his 100th game for England – to give his side a 1–0 lead. England rallied after the break. Lineker and Bryan Robson exchanged a kick one-two pass allowing Robson to burst into the box and lift the ball over Hans van Breukelen after 53 minutes. The score remained when Van Basten turned Tony Adams inside out to finish from 18 yards on 71 minutes. The striker pounced from close-range after a corner to seal a 3–1 win four minutes later.

The Irish and Soviets led the group after two games through a 1–1 draw in Hanover. Ronnie Whelan scored a spectacular left foot volley from 18 yards to put the Irish into the lead. Oleh Protasov equalised with a low shot as the Soviet exerted late pressure.

Needing to defeat the Irish to progress, the Dutch won the game 1–0 through a late Wim Kieft goal. The ball deflected into his path and he delivered a looping header which spun into the Irish net with nine minutes remaining just after Paul McGrath hit a Dutch post. In the other game the Soviets soundly thrashed England. A mistake from Hoddle allowed Sergei Aleinikov to score after three minutes. Adams equalised and England had chances to go ahead, but a goal before half time and late in the game assured the Soviet Union would finish in first place in the group.

The first semi-final was significant as rivals West Germany played the Netherlands. It was only the third time the two sides had faced each other since the 1974 FIFA World Cup Final; the West Germans winning a first round match in the 1980 European Championship, and a 2–2 draw in a 1978 FIFA World Cup second round group match. The game was tight, and the West Germans broke the deadlock on 55 minutes with a Matthäus penalty after a foul on Klinsmann. The lead was held for 20 minutes until Jürgen Kohler brought down Van Basten. Ronald Koeman converted the spot-kick to level the match. With the match headed for extra time a through ball caught the Germans out and Van Basten finished clinically with a shot as he slid along the floor, beating the goal keeper and Kohler to the ball in the 88th minute for a 2–1 win. It gave the Dutch their first competitive victory against the Germans and first appearance in the competition's final. The victory was marred by the reaction of Dutch defender Koeman who wiped the shirt of Olaf Thon, given to him after the match, on his backside in front of the German fans. The player apologised afterwards.

The other semi-final was another unpredictable result. Italy were strong favourites to reach the final and had beaten the Soviets 4–1 in a friendly just two months earlier. Despite controlling the play and having the majority of the chances, the Italians were undone by poor finishing, and a strong, tough opposition who sought to stop their more skillful opponents playing through hard tackles and a defensive strategy. The hard work-rate of the Soviets paid off and four second half minutes, counter-attacks saw two goals from Hennadiy Lytovchenko and Oleg Protasov. The first one from Lytovchenko was initially blocked, but quick reactions beat Franco Baresi to the ball to fire the second shot into the far corner. The second from Protasov was a looping shot which floated over Zenga for a 2–0 victory. It would be the Soviet Union's fourth appearance in a European Championship final.

Seven countries had to qualify for the final stage. West Germany qualified automatically as hosts of the event. The holders, France, failed to qualify.[3] The following eight teams qualified for the final tournament: