Joao Moutinho's second-half strike ensured Porto earned a slight advantage after the first leg of their last 16 Champions League tie against Malaga.
The home team dominated throughout in what was a one-sided match, restricting a defensive Malaga to one shot on goal.
But Porto could not make the most of their overwhelming possession until the impressive Moutinho coolly side-footed Alex Sandro's cross beyond Willy.
The strike ended Malaga's unbeaten record in the competition.
Porto had not lost a game at Estadio do Dragao in the Champions League since 2009 when Chelsea were the visitors.
Malaga lacked belief and adventure and were a shadow of the side which had qualified for the knockout stages unbeaten and four points clear of seven-time champions AC Milan.
The Portuguese hosts controlled the match, monopolising possession and bullying the visitors in midfield - so much so that they did not trouble Helton in the Porto goal.
Despite their dominance, however, Vitor Pereira's men only had a couple of noteworthy chances in the first half - a low driving effort from Marat Izmailov and a Silvestre Varela header.
Porto struggled to breach a defence which has conceded merely seven goals on their travels in La Liga, but without possession, it was of no surprise that Malaga's attacking talents of Julio Baptista, Isco, Joaquin and Roque Santa Cruz failed to flourish.
The Spaniards' forwards were equally as redundant in the second half as Porto continued to dictate.
The lively Izmailov, at full stretch, once again going close before the home team's efforts were eventually rewarded through Moutinho.
Sandro, skipping down the left, bisected the Malaga defence with a fabulous low cross which Moutinho, timing his run to perfection from midfield, coolly finished beyond goalkeeper Willy.
Replays showed the midfielder may have been offside, but that will worry the two-time European champions little as they head to Spain in three weeks' time for the second leg a goal to the good and, importantly, having stopped their opponents from scoring an away goal.
But the tie remains delicately poised and Manuel Pellegrini's men will be hopeful of getting the better of Porto at La Rosaleda, a ground where they beat both AC Milan and Zenit St Petersburg in the group stages.
Live Text Commentary
Full Time The final whistle goes and the game is over.90:00 +1:01 Substitution
Substitution Lucho Gonzalez goes off and Pereira Andre Castro comes on.90:00 +0:21
The assistant referee signals for offside against Ortega Sergio Sanchez. Indirect free kick taken by Da Silva Helton.89:56
Lucas Piazon fouled by Nicolas Otamendi, the ref awards a free kick. Free kick crossed right-footed by Alarcon Isco from left channel.88:48
Lobo Alex Sandro fouled by Ortega Sergio Sanchez, the ref awards a free kick. Da Silva Helton takes the free kick.84:52
Jackson Martinez challenges Nacho Camacho unfairly and gives away a free kick. Direct free kick taken by Oliveira Weligton.82:18
Outswinging corner taken right-footed by Felipe Joao Moutinho from the right by-line to the near post, clearance made by Vitorino Antunes.82:02
Jackson Martinez produces a cross, clearance made by Vitorino Antunes.78:53
Corner from right by-line taken by James Rodriguez.77:18 Substitution
Substitution Nacho Camacho on for Manuel Iturra.77:18 Substitution
Substitution Lucas Piazon comes on in place of Cesar Julio Baptista.75:56
Lucho Gonzalez takes a shot. Save by Caballero Willy.75:30
Short corner taken by Felipe Joao Moutinho.74:12
The free kick is swung in right-footed by Felipe Joao Moutinho, clearance by Jeremy Toulalan.74:12 Booking
Booking Manuel Iturra receives a caution.74:07
Unfair challenge on Christian Atsu by Manuel Iturra results in a free kick.73:56
The ball is sent over by Vitorino Antunes, Da Silva Helton makes a save.73:39
Free kick awarded for an unfair challenge on Ortega Sergio Sanchez by James Rodriguez. Alarcon Isco crosses the ball from the free kick right-footed from left wing.72:44
The offside flag is raised against Christian Atsu. Indirect free kick taken by Caballero Willy.71:59
Cesar Julio Baptista challenges Lobo Alex Sandro unfairly and gives away a free kick. Lobo Alex Sandro takes the direct free kick.
Substitution Marat Izmailov leaves the field to be replaced by Christian Atsu.69:18
James Rodriguez crosses the ball, Ortega Sergio Sanchez makes a clearance.69:02
Jeremy Toulalan challenges James Rodriguez unfairly and gives away a free kick. James Rodriguez restarts play with the free kick.68:29
Free kick awarded for a foul by Ortega Sergio Sanchez on James Rodriguez. James Rodriguez takes the free kick.62:38 Substitution
Substitution Francisco Portillo comes on in place of Sanchez Joaquin.61:52
Corner taken by James Rodriguez.61:05
Inswinging corner taken by Felipe Joao Moutinho, save made by Caballero Willy.60:51
Marat Izmailov sends in a cross, blocked by Ortega Sergio Sanchez.59:44
James Rodriguez produces a left-footed shot from just outside the penalty box that goes wide left of the target.57:18 Substitution
Substitution James Rodriguez comes on in place of Silvestre Varela.55:41
The assist for the goal came from Lobo Alex Sandro.55:41 Goal scored
Goal! - Felipe Joao Moutinho - FC Porto 1 - 0 Malaga Felipe Joao Moutinho fires in a goal from close range low into the middle of the goal. FC Porto 1-0 Malaga.54:00
Da Silva Danilo produces a right-footed shot from just outside the penalty box that misses to the left of the target.53:42
Free kick awarded for an unfair challenge on Francisco Fernando by Cesar Julio Baptista. Francisco Fernando takes the direct free kick.52:37
Lobo Alex Sandro produces a cross, Marat Izmailov produces a right-footed shot from close range which goes wide of the left-hand upright.50:45
Inswinging corner taken by Sanchez Joaquin, save by Da Silva Helton.50:28
Ortega Sergio Sanchez sends in a cross, clearance made by Da Silva Danilo.49:33
Free kick awarded for an unfair challenge on Sanchez Joaquin by Felipe Joao Moutinho. The free kick is delivered right-footed by Sanchez Joaquin from right wing.48:21
Inswinging corner taken right-footed by Felipe Joao Moutinho from the left by-line to the near post.48:03
Lucho Gonzalez takes a shot. Blocked by Jeremy Toulalan.45:01
The match restarts for the second half.45:00 +1:04 Half time
Half Time The whistle is blown to end the first half.45:00 +0:26
Silvestre Varela concedes a free kick for a foul on Roque Santa Cruz. Caballero Willy takes the free kick.44:20
Marat Izmailov produces a left-footed shot from outside the box and misses left.42:23
Jackson Martinez produces a right-footed shot from just outside the box that misses to the right of the net.40:43
Effort from outside the area by Felipe Joao Moutinho goes wide right of the goal.39:49
Unfair challenge on Felipe Joao Moutinho by Cesar Julio Baptista results in a free kick. Lobo Alex Sandro takes the free kick.38:43
Shot from just outside the penalty area by Da Silva Danilo misses to the left of the target.37:52
Jackson Martinez is ruled offside. Indirect free kick taken by Caballero Willy.34:43
Felipe Joao Moutinho produces a cross.34:35
Short corner taken by Felipe Joao Moutinho from the left by-line.33:05
Felipe Joao Moutinho takes a outswinging corner from the right by-line to the near post, clearance made by Vitorino Antunes.32:51
Jackson Martinez has an effort at goal. Ortega Sergio Sanchez gets a block in.31:17
Foul by Cesar Julio Baptista on Eliaquim Mangala, free kick awarded. Free kick crossed right-footed by Felipe Joao Moutinho from right channel.30:18
Felipe Joao Moutinho takes the outswinging corner, clearance by Martin Demichelis.29:05
Felipe Joao Moutinho takes a shot. Save made by Caballero Willy.27:02
Free kick awarded for a foul by Vitorino Antunes on Silvestre Varela. Da Silva Helton takes the direct free kick.25:17
Free kick awarded for a foul by Ortega Sergio Sanchez on Marat Izmailov. Lobo Alex Sandro restarts play with the free kick.24:21
Jeremy Toulalan fouled by Felipe Joao Moutinho, the ref awards a free kick. Free kick taken by Vitorino Antunes.23:30
Manuel Iturra concedes a free kick for a foul on Francisco Fernando. Free kick taken by Francisco Fernando.22:16
Da Silva Danilo takes a shot. Save made by Caballero Willy.19:58
The ball is sent over by Francisco Fernando, Caballero Willy makes a save.17:04
Corner taken by Felipe Joao Moutinho played to the near post, Close range header by Silvestre Varela goes wide of the left-hand post.15:23
Felipe Joao Moutinho takes the inswinging corner, Francisco Fernando produces a header from close range which goes wide of the left-hand post.13:45
The referee blows for offside against Jackson Martinez. Oliveira Weligton takes the free kick.12:00
The referee blows for offside. Eliaquim Mangala takes the indirect free kick.9:58
Jackson Martinez challenges Martin Demichelis unfairly and gives away a free kick. Direct free kick taken by Caballero Willy.7:28
Lucho Gonzalez is caught offside. Caballero Willy takes the free kick.7:17
The ball is sent over by Jackson Martinez.6:35
Manuel Iturra concedes a free kick for a foul on Felipe Joao Moutinho. Direct free kick taken by Felipe Joao Moutinho.5:39
Martin Demichelis is penalised for a handball. Nicolas Otamendi takes the indirect free kick.5:08
Jackson Martinez concedes a free kick for a foul on Jeremy Toulalan. Martin Demichelis restarts play with the free kick.3:30
Marat Izmailov takes a shot. Save by Caballero Willy.2:28
Outswinging corner taken from the right by-line by Sanchez Joaquin, Martin Demichelis takes a shot. Lucho Gonzalez gets a block in.2:04
Sanchez Joaquin fouled by Lobo Alex Sandro, the ref awards a free kick. Martin Demichelis takes the direct free kick.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers