The home side were reduced to 10 men after just nine minutes when defender Eder Militao was shown a straight red card.
Real remain seven points behind city rivals Atletico Madrid who travel to Cadiz on Sunday with two games in hand.
But they faced an uphill task when Militao was given his marching orders after he brought down Sergio Leon.
A delightful pass from Toni Kroos sent Asensio away and his cool finish put the hosts into the lead four minutes after Militao's dismissal.
But the visitors were undeterred by Real's opener and, following a number of chances at both ends, Morales netted past Thibaut Courtois with 32 minutes played.
Marti then had the opportunity to put Levante into the lead but his penalty kick was saved by Courtois shortly after the hour mark.
However, Marti made amends when he converted Enis Bardhi's pass with 78 minutes played to give Levante all three points.