The church was built during the folkunga era, with its nave and chancel generally dated to between 1227 and 1280 by the art historian Gerda Boëthius. A sacristy and brick ribbed vaults were added around the mid-1300s, along with buttresses supporting the eastern end. The porch, standing slightly out of alignment with the nave, has been dated to roughly 1250–1350. Despite later window alterations, the exterior is said to have remained largely unchanged since medieval times, and both medieval lychgates in the churchyard wall survive.
The interior has seen more change. Mid-fifteenth-century wall paintings by an unknown artist of the Mälardalen school were later overpainted, traditionally attributed to Albertus Pictor or his workshop, towards the end of that century. In the mid-1700s the medieval paintings were limewashed over entirely and the church received much of its present fittings, including pews, organ gallery, organ case and pulpit. A restoration in 1907 under Sigge Cronstedt uncovered the earlier fifteenth-century paintings beneath the later layer, removing most of the Albertus Pictor-attributed work in the process, though one small scene was left visible. These paintings are considered iconographically unusual and rare examples of their kind.
The church's most celebrated treasure is its altarpiece, carved around 1510 in the Brussels workshop of Jan Borman, depicting the Passion with a smaller Nativity sequence. According to an old tradition, it was taken as war booty in Germany and arrived at Villberga in 1632, though this account cannot be independently confirmed. A fifteenth-century sacrament cabinet stands by the south wall of the chancel.
Fragments of a Gotland-style medieval font, thought to date from around 1300, survive alongside a later sandstone font from 1967, designed in imitation of the older piece. Brass chandeliers of varying dates, including examples inscribed with seventeenth- and eighteenth-century names, hang within the nave and sacristy.
A free-standing, timber-clad bell tower dating from 1728 stands just north of the churchyard wall. It was blown down in a storm the same year it was built, after which it stood for a time at a nearby site before being moved back to its original position in 1952.