Porto took a two-goal lead through Ricardo Quaresma and Silvestre Varela, before Joselu pulled a goal back with a well-struck drive and Porto's defensive pair of Alex Sandro and goalkeeper Helton combined to deflected the ball over their own goal-line for the equaliser.
The comeback gives Armin Veh's side the edge going into the second leg at the Commerzbank Arena on February 27.
Frankfurt had lost just one of their last eight Europa League matches, while Porto were making their first appearance in this season's competition having dropped out of the UEFA Champions League after finishing third in their group.
Frankfurt struggled to cope with the pace of Varela and Quaresma on either flank and both Pirmin Schwegler and Marco Russ picked up bookings for mistimed challenges on the Portuguese pair.
Jackson Martinez came close to putting Paulo Fonseca's side ahead in the 33rd minute with a curling right-footed effort that whistled just wide of the top right-hand corner.
In the final minute of the half Porto took the lead through Quaresma. The former Barcelona winger stole the ball from Sebastian Rode on the left, cut inside right-back Sebastian Jung and then whipped a dipping strike in off the far post from 20 yards.
Porto doubled their lead in the 68th minute when a deep free-kick from Quaresma was hooked into the path of Varela by Maicon, leaving the 29-year-old with a simple finish for his eighth goal of the season.
Frankfurt pulled a goal back three minutes later through Joselu when the former Real Madrid forward drilled a low drive into the bottom-left corner from 20 yards.
And Veh's men levelled the tie in the 78th minute when a Tranquillo Barnetta corner caused pandemonium in the Porto box.
Eliaquim Mangala's misdirected header was touched goalwards by Russ and after Helton parried, the home side's left-back Alex Sandro crashed a volley onto his own crossbar that bounced down on to Helton's fist and ended up in the net.