Ghana reached the semi-finals of the Africa Cup of Nations after Mubarak Wakaso scored a controversial penalty and a breakaway goal.
After a dour first half, Ghana won a spot-kick when Asamoah Gyan fell after a Carlitos shoulder barge and Wakaso smashed home the spot-kick
Cape Verde responded well and Ghana goalkeeper Fatau Dauda made superb saves from Platini, Djaniny and Heldon.
But Wakaso raced clear with the Cape Verde keeper stranded to seal the win.
It was a harsh ending for Cape Verde, who came so close to an equaliser that would have been deserved on balance of play in the second half.
That they were undone by a dubious penalty decision and a last-minute goal when they had thrown everyone forward will be a bitter memory to reflect on when they look back at their first Nations Cup finals.
The Blue Sharks shaded a cagey first half as both sides looked more afraid to make a mistake than be prepared to try to make something happen.
Ghana on course for glory
Ghana are edging closer to their first title for 31 years. They last won the tournament in 1982 after beating Libya on penalty kicks 7-6 following a 1-1 draw.
They had the best of very few chances in the opening period, with Heldon firing over from 12 yards after he had been played in by a short pass from Julio Tavares.
And the Blue Sharks showed more ambition as Ghana, in their fourth consecutive Nations Cup quarter-final, appeared edgy and inhibited.
Heldon thumped another effort just wide after coming in off the wing, while Ghana keeper Dauda did well to pounce on a low cross from Tavares to stop the ball reaching Marco Soares.
The game was crying out for something different and 40 seconds after the break, Ghana brought on Wasako, who had failed to win back his place in the starting line-up having completed his suspension.
It took six minutes for the Espanyol winger to make an impact.
Ghana skipper Gyan fell after a shoulder-to-shoulder challenge with Carlitos and the referee pointed to the spot, waving away furious appeals by the Cape Verdeans. Up stepped Wasako to smash the spot-kick straight down the middle of the goal.
Rather than settle the Black Stars' nerves, it fired up Cape Verde as they channelled their perceived sense of injustice and launched wave after wave of attack.
Almost immediately, Heldon cracked a shot wide and, later, Platini was denied when Dauda tipped his shot around the post. The Ghana keeper was to be his side's hero and the barrier that Cape Verde could not break down.
He was at it again when he produced an excellent one-handed save to keep Djaniny's effort out of the top corner.
But Cape Verde were hit with the ultimate sucker-punch when they sent everyone, including keeper Vozinha, up for a corner but the ball broke to Ghana and Wakaso was able to run clear and slide the ball into an empty net.
Ghana coach Kwesi Appiah:
"Our first half was okay, but second half was not one of our best games.
"Cape Verde dominated in the second half, but the important thing is that we won and are through to the semi-finals. Cape Verde proved me right that they would be tough."
Cape Verde coach Luis Antunes:
"Today, we all watched a beautiful game but, unfortunately, the best team is going home and the tournament will lose its shine.
"This was our fourth game and in our first three games there were no questions - now there are questions. You should draw your own conclusions.
"They would want to see Ghana move into the semi-finals or do you want 200 spectators to watch Cape Verde against Togo in the semi-finals?"
- 16 Dauda
- 04 Pantsil Booked
- 15 Vorsah
- 21 Boye
- 23 Afful Booked
- 07 Atsu (Asante - 78' )
- 08 Agyemang
- 10 Adomah (Wakaso - 47' )
- 11 Rabiu Booked (D Boateng - 84' )
- 20 Asamoah
- 03 Gyan
- 01 Adjei
- 02 R Boateng
- 05 Awal
- 13 Akaminko
- 19 Mensah
- 06 Annan
- 09 D Boateng
- 14 Asante
- 22 Wakaso
- 17 Clottey
- 18 Boakye
- 01 Vozinha
- 03 Varela
- 06 Neves
- 08 Varela (Djaniny - 67' )
- 18 Nivaldo
- 23 Carlitos Booked
- 05 Babanco Booked
- 15 Soares
- 10 Heldon
- 11 Tavares (Rambe - 80' Booked )
- 20 Ryan (Platini - 51' )
- 12 Fock
- 13 Lima
- 14 Gege
- 19 Pecks
- 02 Stenio
- 04 Ramos
- 07 Platini
- 17 Souto
- 09 Rambe
- 21 Djaniny
Ref: Rajin Seechurn