All the action as it happened in the Group C match in Porto.
Goals and major incidents:
FULL-TIME: Denmark and Sweden both qualify, and the result confirms Italy are out of the competition despite beating Bulgaria.
89 mins: GOAL: Denmark 2-2 Sweden
Sorensen fails to hold Wilhelmsson's cross and Jonson hooks the ball home in the ensuing scramble to level the score and almost certainly send Italy home.
84 mins: Sand blasts wastefully over after running onto Rommedahl's pass. Sweden are still set to qualify at this stage with Italy only drawing.
78 mins: Rommedahl cuts in from the left and forces Isaksson to make a fine save. Two minutes later, forward Allback replaces midfielder Andersson for Sweden.
72 mins: Wilhelmsson replaces Kallstrom as the Swedes lose their impetus.
70 mins: Gravesen threads his way through the Swedish defence to set up Sand, but he fails to take his big chance.
66 mins: GOAL: Denmark 2-1 Sweden
A Danish corner is cleared but the ball is put back into the box for Tomasson to score his second from close range and restore Denmark's lead.
63 mins: Kallstrom is booked for a high challenge on Gravesen. Poulsen replaces Daniel Jensen for Denmark two minutes later.
61 mins: Larsson shoots just wide from outside the area after some neat build-up play by the increasingly dangerous Swedes.
57 mins: Denmark replace Jorgensen with another winger, Rommedahl.
47 mins: GOAL: Denmark 1-1 Sweden:
Sorensen sends Larsson sprawling in the area, and the striker steps up to beat him from the spot. Replays suggest it may not have been a penalty.
46 mins: Denmark replace defender Niclas Jensen, who has a injury, with Bogelund. Sweden are unchanged for the second half.
HALF-TIME: Denmark lead but Sweden also look to be going through at this stage, with Italy 1-0 down to Bulgaria at the break.
42 mins: Tomasson nearly has another after Jorgensen's cross bounces off Sand and finds the striker one-on-one with Isaksson.
39 mins: Mellberg hits the bar with a header as the Danish goal comes under intense pressure.
35 mins: Sorensen makes a fine double save, beating out Larsson's low drive then stopping Ibrahimovich as he latches onto the rebound. Sweden's Edman is booked for dissent, putting him out of the quarter-finals.
28 mins: GOAL: Denmark 1-0 Sweden
Sweden are stunned as Tomasson lets fly with a dipping shot from 20 yards out which arcs over Isaksson and into the net.
25 mins: Helveg skies a 25-yard effort way over the bar as Denmark continue to get the better of the Swedes.
Tomasson celebrates his goal
19 mins: Danish keeper Sorensen needs treatment after being caught in the face as he dives at the feet of Ljungberg.
14 mins: A slip by Sweden's Jakobsson allows Tomasson to find Gronkjaer racing in from the right, but he blasts into the side netting.
5 mins: Denmark respond almost immediately when Jorgensen pops up in the Swedish box but sees his effort saved.
4 mins: Ljungberg tries his luck from 25 yards as the rain makes conditions slippery, but his shot flies over the bar.
1945 BST: Match kicks off.
Porto is awash with red and yellow as Danish and Swedish fans make their way to Estadio do Bessa for their Scandinavian derby.
Talk everywhere is of whether the game will finish in a high-scoring draw, a result that would see both teams' progress and Italy go home.
The mood between the supporters is good natured, with lots of friendly banter and cheering. For once the blistering heat has abated and it is raining.
Swedish midfielder Mikael Nilsson, who moved back to replace the injured Teddy Lucic against Italy, starts at right back again.
Andreas Jakobsson comes in for the suspended Tobias Linderoth in midfield, while forward Mattias Jonsson is preferred to midfielder Christian Wilhelmsson.
After tearing a thigh muscle against Bulgaria, Dennis Rommedahl is replaced in the Danish line-up by Jesper Gronkjaer.
Denmark: Sorensen, Helveg, Laursen, Henriksen, N Jensen, Gravesen, Tomasson, D Jensen; Gronkjaer, Sand, Joergensen.
Sweden: Isaksson, Nilsson, Mellberg, Jakobsson, Edman, Andersson, Kallstrom, Jonson, Ljungberg, Ibrahimovic, Larsson.
Referee: Markus Merk (Germany)