Bede states that Cenwalh was the son of the King Cynegils baptised by Bishop Birinus. He was also the great-great grandson of Cerdic. The Anglo-Saxon Chronicle offers several ancestries for Cynegils, and the relationship of Cynegils and Cenwalh to later kings is less than certain. It has been noted that the name Cenwalh may have had a British rather than Anglo-Saxon etymology. Although Cynegils is said to have been a convert to Christianity, Bede writes that Cenwalh:
refused to embrace the mysteries of the faith, and of the heavenly kingdom; and not long after also he lost the dominion of his earthly kingdom; for he put away the sister of Penda, king of the Mercians, whom he had married, and took another wife; whereupon a war ensuing, he was by him expelled his kingdom...
Cenwalh took refuge with the Christian king Anna of East Anglia, and was baptised while in exile, although the date of his exile is uncertain. Bede says that it lasted three years, but does not give the dates. The Anglo-Saxon Chronicle reports that he granted lands at Ashdown to a kinsman named Cuthred. If this is same Cuthred whose death is reported around 661, then he was perhaps a son of King Cwichelm or a grandson of Cynegils, if indeed King Cwichelm was not also a son of Cynegils.
None of the West Saxon dates give any clear evidence for the period of Cenwalh's exile, but since King Anna was killed by Penda in 654, and exiled from East Anglia by him in 651 (according to the contemporary Additamentum Nivialensis), Cenwalh's exile cannot have begun much later than 648. Furthermore, if (as William of Malmesbury states) Cenwalh was baptised by Saint Felix, this must have occurred by c. 647. Cenwalh's repudiation of Penda's sister therefore followed fairly closely upon Penda's killing of Oswald of Northumbria at Maserfeld in 642, Oswald being the godfather of Cynegils, and husband of Cenwalh's sister Cyneburh, and thus the protector of Cynegils's line in Wessex. Penda was killed at the Battle of Winwaed on 15 November 655. Barbara Yorke suggests that Cenwalh returned to power in 648, D.P. Kirby places his exile in the 650s.
Whenever Cenwalh returned to power, his Bishop in Dorchester-on-Thames was the Frank Agilbert. Bede states:
At length the king, who understood none but the language of the Saxons, grown weary of that bishop's barbarous tongue, brought into the province another bishop of his own nation, whose name was Wini, who had been ordained in France; and dividing his province into two dioceses, appointed this last his episcopal see in the city of Winchester, by the Saxons called Wintancestir.
The new diocese of Winchester, in lands formerly belonging to the Jutes (who were thereafter confined to the Isle of Wight) lay in the heart of the future Wessex. The ravaging of Ashdown by Penda's son Wulfhere c. 661, in the original lands of the Gewisse, suggests that this movement was brought about by sustained Mercian pressure on the Saxons.
Wulfhere advanced as far south as the Isle of Wight, and detached the Meon valley from Cenwalh's kingdom, giving it to his godson Æthelwalh, King of the South Saxons. At around this time, the Mercian prince Frithuwold was ruling Surrey and Berkshire. Wulfhere's defeat at the hands of Ecgfrith in 674 freed the southern kingdoms from Mercian control, and Wulfhere was defeated the following year by the West Saxons, led by Æscwine.
The Anglo-Saxon Chronicle records a battle between Cenwalh and the Britons in its entry for 658: "Here Cenwalh fought at Peonnum against the Wealas and caused them to flee as far as the Parret". The advance into the British south-west is obscure, but Cenwalh's relations with the Britons were not uniformly hostile. He is reported to have endowed the British monastery at Sherborne, in Dorset, while the early Anglo-Saxon missionary Saint Boniface is said to have been born in Crediton, Devon, and educated at a formerly British monastery near Exeter.
Whether Cenwalh ruled alone in Wessex is uncertain. Earlier kings appear to have shared rulership, and Cenberht, father of the future King Caedwalla, may have ruled together with Cenwalh rather than being merely a sub-king.
In 665–668 Cenwalh quarreled with Bishop Wini, who sought refuge with the Mercian king Wulfhere, which D.P. Kirby takes to be a sign of Wulfhere's influence. By this time, the Bishop at Dorchester was the Mercian-backed Ætla, and Thame was a possession of Wulfhere's.
According to the Anglo-Saxon Chronicle, Cenwalh died in 672, and was succeeded by his widow, Seaxburh, who held power for about a year.
No later kings of the West Saxons are known to be descended from Cenwalh, indeed no descendants of his are known. King Centwine is said to have been his brother, but Kirby notes the circumstantial evidence which makes this unlikely.
However, if no descendants of Cenwalh held the throne in Wessex, it may be that his descendants held power in Mercia and Kent in the 9th century. The Mercian kings Coenwulf and Ceolwulf, and their brother Cuthred, King of Kent, claimed descent from an otherwise unknown brother of Penda and Eowa called Coenwalh. It has been suggested that Coenwalh was in fact this Cenwalh, brother-in-law, rather than brother, of Penda and Eowa.