The Catalan giants missed their top scorer as Olmo bagged the only goal of the game in a narrow win that sends Hansi Flick's side seven points clear.
Barcelona dominated proceedings and clocked up an extraordinary 40 shots throughout the 90 minutes of a 1-0 win but found it tough going against a determined Mallorca and an impressive Leo Roman in the visitors’ goal.
Ferran Torres saw an early effort saved by Roman, with Lamine Yamal blocked on the follow-up. The teenager then teed up Olmo for a snapshot with a trademark outside-of-the-boot pass, but the Spain star was also denied by Roman who flung out a hand to preserve his clean sheet.
Barca continued to pile on the pressure in a dominant first half. Gavi drilled a low shot onto the post, via a generous deflection, before a curling Yamal effort was blocked by Roman. This time the ball was pushed straight into the path of Ronald Araujo, but the defender could only fire wide when he really should have scored.
Pedri was pulling the strings for Barcelona and at the heart of all of the hosts' best play but could only watch on as Olmo, Fati and Yamal all conspired to miss chances before the half-time finally blew.
Yet Barca didn't have to wait too long to break the deadlock. Olmo was found inside the penalty area by Eric Garcia and cleverly tucked home a low finish within a minute of the restart.
The only surprise was that Barcelona couldn't add to their tally after finally going ahead. Yamal had the clearest chance of all after being sent clean through on 78 minutes by another clinical ball from Pedri but again Roman came out on top.
A frustrated Hansi Flick sent on Raphinha, Fermin Lopez and Pau Victor in the closing stages in search of another goal but it never arrived. Instead Barca had to settle for the 1-0 win that does at least send them seven points clear of Real Madrid at the top of the table.
GOAL rates Barcelona's players from Montjuic…
Getty Images SportGoalkeeper & Defence
Wojciech Szczesny (6/10):
Didn't have much to do but commanded his box well.
Eric Garcia (8/10):
Started at right-back as Flick shuffled his pack and put in a good shift in an unfamiliar position. Set up Olmo for the opener.
Ronald Araujo (7/10):
Looked comfortable in central defence but missed a great chance to open the scoring in the first half from close range.
Inigo Martinez (7/10):
A quiet evening for the veteran as Mallorca offered very little going forwards.
Hector Fort (6/10):
A rare start at left-back and did well going forwards. However, a little suspect defensively as Mallorca got in behind the youngster on several occasions.
AdvertisementGetty Images SportMidfield
Gavi (7/10):
Went close in the first half with a deflected shot that hit the post. Otherwise, a typically committed showing and involved in the only goal.
Pedri (8/10):
Head and shoulders above every one else on the pitch. He was silky smooth on the ball and caused Mallorca all sorts of problems.
Dani Olmo (8/10):
Missed a couple of chances in the first half but broke the deadlock with a good finish. Replaced on the hour.
Getty Images SportAttack
Lamine Yamal (7/10):
A constant threat down the right for Barca as usual and a little unfortunate not to be on the scoresheet. Missed a glorious chance in the second half to finish Mallorca off.
Ferran Torres (6/10):
Took over from the injured Robert Lewandowski but couldn't add to his tally despite having a few sights of goal.
Ansu Fati (7/10):
Handed just his second La Liga start of the season and looked fairly sharp despite his lack of game time. Had a couple of chances but couldn't score and was hooked on the hour.
AFPSubs & Manager
Raphinha (6/10):
Given the last 30 minutes and almost scored with one late surging run.
Fermin Lopez (6/10):
Added some fresh legs after taking over from Olmo but, like Raphinha, couldn't help Barca conjure a second goal.
Pau Victor (6/10):
Given some rare minutes as he gave Torres a breather. Had two shots but both were saved by Roman.
Gerard Martin (6/10):
Took over from Fort at left-back for the closing stages.
Frenkie de Jong (N/A):
A late substitute, only saw the final few minutes.
Hansi Flick (7/10):
A good night's work by the Barca coach. His side should have won by a greater margin but he will be happy to have picked up all three points on a night when he gave a number of key players a rest ahead of Saturday's Copa del Rey final.