Bodo/Glimt, who inflicted a stunning 6-1 defeat on Jose Mourinho's Roma in the group stage, battled back from a goal down to beat the Italian giants again.
Lorenzo Pellegrini gave Roma the lead just before halftime as the visitors looked to extend a nine-match unbeaten run in all competitions.
But Ulrik Saltnes bundled in an equaliser for the home side before the hour mark.
Pellegrini had an effort ruled out for offside with 15 minutes remaining and Roma suffered another setback in the 89th minute.
Hugo Vetlesen got to Amahl Pellegrino's free-kick first and nodded a dramatic winner past away goalkeeper Rui Patricio.
Roma substitute Eldor Shomurodov had a late chance to level, but he headed narrowly over the crossbar.
Leicester were the better side for long periods against PSV but will now face a tough test next week in the second leg in the Netherlands.
Without injured striker Jamie Vardy, Brendan Rodgers' men could only muster two shots on target at the King Power Stadium.
The Foxes are hoping to reach the semifinals of a European competition for the first time in their history, after also reaching the last eight of the 2016/17 Champions League.
"There were not too many chances in the game," Rodgers told BT Sport. "Maybe a bit more quality in the final third would have made it a bit easier for us.
"We just lacked that bit of quality up there."
Feyenoord and Slavia Prague played out a thrilling 3-3 draw in Rotterdam, with Ibrahim Traore netting a 95th-minute equaliser for the Czechs.