Boa Morte cashed in on some generous positioning to curl home a 15th minute free-kick before drilling home the clincher on the half hour.
Little happened of note after the restart following an open first period. As the half progressed though there looked every chance that further goals would come, but the scoreline remained the same.
The hosts had been vulnerable at crosses into the box all afternoon before two fabulous saves in injury time from keeper Antti Niemi left Marcus Bent, and then Hermann Hreidarsson holding their heads.
Those saves proved crucial as the hosts saw out the remaining seconds for a win that secured their place in the Premiership next term.
The defence switched back to the line-up in the previous league game, with Chris Powell rested and Gonzalo Sorondo starting in the centre. Bryan Hughes and Dennis Rommedahl were both out so there were starts for both Jason Euell and Darren Ambrose. Meanwhile, Osei Sankofa was added among the substitutes.
No change in the table affecting Charlton thanks to Everton immediately above and Manchester City immediately below also losing today.
Alan Curbishley: "I felt once we got ourselves back in the game we were the better side and created the better chances. But we're disappointed at what we've done defensively today although we've definitely done enough to get a result."
"We're not unlucky the way the first goal has gone in. Once again that has left us chasing the game and for the second you can't allow an opponent to go past four defenders like he did. The two goals we've conceded today were avoidable and we're back to conceding goals early and chasing the game. We had got that out of our system in the last couple of months but it happened on Wednesday and it's happened again here."
Source: Official site