Barcelona and Bayer Leverkusen won to cut the gap on league leaders Real Madrid and Bayern Munich respectively.