ALBION were made to pay for a series of missed opportunities as Bolton snatched an undeserved Boxing Day victory.
Matt Taylor's strike five minutes before half-time and Johan Elmander's effort four minutes from the end stole the points for Wanderers.
The Baggies bossed the Reebok Stadium encounter virtually from start to finish - but a combination of the woodwork and disappointing finishing cost them dear.
The usually-prolific Peter Odemwingie was the chief culprit as he spurned a hat-trick of glorious openings.
James Morrison and Somen Tchoyi were also wasteful in front of goal while Chris Brunt rattled the post five minutes into the second-half as Albion suffered back-to-back away defeats.
Youssouf Mulumbu was recalled to the starting XI along with fit-again&nbsp;Odemwingie.
Jerome Thomas was absent through illness, meaning Roberto Di Matteo was forced to reshuffle his midfield.
Marc-Antoine Fortuné was left out altogether after spearheading the attack at Villa last time out.
The visitors made a bright start to the game but could not convert their superior possession into chances against a resolute Trotters defence.
The Baggies finally carved out a shooting opportunity in the 15th minute when Morrison found Graham Dorrans, who nut-megged Fabrice Muamba before firing a 20-yard strike straight at Jussi Jaaskelainen.
Two minutes later, Tchoyi beat Gretar Steinsson to the left-hand by-line and crossed to the back post where ex-Baggie Paul Robinson did well to clear for a corner, preventing Brunt from heading home from close range.
Albion almost got hit by a sucker punch on 18 as Muamba slid Elmander in on goal, but the giant Swede fired wildly over from 12 yards with the goal at his mercy.
Moments later, Tchoyi again had Steinsson back-pedalling inside his own penalty area and the Cameroon ace manufactured enough room to fire a fierce 15-yard shot inches past the left-hand post.
Morrison's delightful chip put Odemwingie in acres of space six yards out on 22, but the Nigeria international lost his bearings and screwed a left-foot shot horribly wide on the turn.
At the other end, Kevin Davies flicked on Steinsson's throw-in from the right for Elmander to head goalwards and Scott Carson grabbed the ball just under his crossbar.
Morrison's stiff challenge in the middle of the park sprung the Baggies into a two-on-one situation eight minutes before the break.
But when Odemwingie looked to present Dorrans with a simple tap-in, he instead rolled a weak pass straight to Cahill who cleared the danger.
And Di Matteo's men were made to pay two minutes later when Taylor collected Elmander's flick-on from Jaaskelainen's long punt.
The Wanderers midfielder slotted Chung-Yong Lee through on goal and he rounded Carson before cutting the ball back for Taylor to slot home.
Albion looked for a quick response when Gonzalo Jara cut inside from the right and drilled in a left-footed shot that Jaaskelainen tipped over.
Seconds later, Cahill miscontrolled Odemwingie's cross from the right and almost allowed Morrison a sight of goal inside the six-yard box.
Albion started the second-half in the same fashion as the first and Tchoyi was once again in the thick of the action.
The summer signing had Steinsson&nbsp;reeling again and produced a powerful 15-yard strike that Jaaskelainen beat out for a corner at his near post.
The Baggies almost levelled in the 50th minute - but Brunt was unfortunate to see his header from Tchoyi's cross rebound off the inside of the near post to safety, with Jaaskelainen beaten.
The Trotters scrambled the ball away for a corner from which Cahill's clearing header was volleyed into the side-netting by Brunt.
Fourteen minutes after the break, Morrison burst through onto Odemwingie's slide-rule pass and should have levelled.
But the Scotland international's touch let him down and he allowed Jaaskelainen to gather at his feet.
Owen Coyle was forced into a change in the 64th minute as the injured Steinsson made way for Sam Ricketts.
Brunt switched wings with Tchoyi and, in the 68th minute, the Northern Ireland international flashed a ball across the six-yard box, which just evaded Odemwingie in the middle.
Seconds later, the same two combined - and this time Odemwingie dragged his 12-yard shot wide of the far post with only Jaaskelainen to beat. Yet another - and probably the most gilt-edged - chance had gone begging.
At the opposite end, Elmander miscontrolled Rickett's right-wing cross before looping an over-head kick inches over.
Di Matteo made a change in the 70th minute as Ishmael Miller replaced Morrison.
The Albion sub almost made an immediate impact but was unfortunate to see his goalbound volley from Brunt's ball blocked by Cahill.
Carson had to make a rare save on&nbsp;79, diving to his right to prevent Stuart Holden curling home a free-kick.
Four minutes from time, Tamas allowed Elmander to bully his way past him and the Swede saw his initial effort blocked by the once-again impressive Paul Scharner before slotting home the rebound to double Bolton's lead.
Carson came rushing out of his goal in the 88th minute and managed to get a touch to Kevin Davies' lob before Scharner nodded it off the goalline.
Good play by Tchoyi down the right in the dying seconds saw him eventually find Miller whose strike summed up Albion's afternoon as it rebounded back out off Cahill.
The full-time whistle left Albion ruing their lack of a cutting edge in a game they ended up losing - but should have won.
BOLTON (4-4-2): Jaaskelainen; Steinsson (Ricketts 64), Cahill, Knight, Robinson; Taylor, Holden, Muamba (M Davies 76), Lee (Klasnic 80); K Davies, Elmander. Subs not used: Bogdan (gk), Petrov, Rodrigo, Blake.
ALBION (4-2-3-1): Carson; Jara, Scharner, Tamas, Cech; Mulumbu (Cox 85), Dorrans; Brunt, Morrison (Miller 70), Tchoyi; Odemwingie. Subs not used: Myhill (gk), Shorey, Ibanez, S Reid, Barnes.
GOALS: BOLTON - Taylor (40), Elmander (86).
BOOKINGS: BOLTON - Cahill (foul 38). ALBION - Brunt (foul 89).
REFEREE: H Webb (South Yorkshire).
ALBION STARMAN: James Morrison.
PIC: OFF DAY...Odemwingie screwed this great first-half chance wide