The Lions looked in control at 18-9 ahead after tries from man-of-the-match Tommy Bowe and his fellow wing Ugo Monye.
But Western Province kept plugging away as full-back Joe Pietersen's try set up a tense finish.
Pietersen had earlier dropped a goal, as did fly-half Willem de Waal, who also kicked four penalties, yet the Lions did just enough to make it five wins from five a week before the first Test against world champions South Africa.
Flanker Martyn Williams also added a try, while two Stephen Jones penalties and a conversion also contributed towards the victory.
The Lions had expected Western Province to be their toughest opponents so far, and so it proved.
The highlight was another sparkling display by the irrepressible Bowe, while Monye, Martyn Williams and number eight Andy Powell also impressed.
The Lions had to contend with comfortably the worst weather conditions of their 10-match trip, with a blustery wind and heavy showers blowing in from Table Mountain.
And they were also watched by their biggest crowd on tour - just over 34,000, that included an escalating contingent of travelling fans.